九月 20, 2023
摘要:本教程向您介绍 PostgreSQL 的TO_DATE()函数,该函数可帮助您将字符串转换为日期。
目录
PostgreSQL TO_DATE 函数简介
TO_DATE()函数将字符串文字转换为日期值。下面说明了TO_DATE() 函数的语法:
TO_DATE(text,format);
TO_DATE() 函数接受两个字符串参数。第一个参数是要转换为日期的字符串。第二个是输入格式。TO_DATE() 函数返回一个日期值。
请参见以下示例:
SELECT TO_DATE('20170103','YYYYMMDD');
输出显示:
TO_DATE
------------
2017-01-03
在此示例中,字符串20170103根据输入格式YYYYMMDD转换为日期。
YYYY:4 位数格式的年份MM:2 位数字格式的月份DD:2 位数字格式的日期
结果,该函数返回January 3rd 2017。
下表说明了用于格式化日期值的模板模式:
| 模式 | 描述 |
|---|---|
| Y,YYY | 带逗号的年份,4 位数字 |
| YYYY | 4 位数字的年份 |
| YYY | 年份的最后 3 位数字 |
| YY | 年份的最后 2 位数字 |
| Y | 年份的最后 1 位数字 |
| IYYY | ISO 8601 周编号年份(4 位或更多位) |
| IYY | ISO 8601 周编号年份的最后 3 位数字 |
| IY | ISO 8601 周编号年份的最后 2 位数字 |
| I | ISO 8601 周编号年份的最后 1 位数字 |
| BC、bc、AD 或 ad | 不带句点的纪元指示器 |
| B.C.、b.c.、A.D. 或 a.d. | 带句点的纪元指示器 |
| MONTH | 全大写的英文月份名称 |
| Month | 全首字母大写的英文月份名称 |
| month | 全小写的英文月份名称 |
| MON | 大写的月份缩写名称,例如 JAN、FEB 等。 |
| Mon | 首字母大写的月份缩写名称,例如 Jan、Feb 等。 |
| mon | 小写的月份缩写名称,例如 jan、feb 等。 |
| MM | 月份号从 01 到 12 |
| DAY | 全大写的日名 |
| Day | 首字母大写的日名 |
| day | 全小写的日名 |
| DY | 大写的缩写日名 |
| Dy | 首字母大写的缩写日名 |
| dy | 全小写的缩写日名 |
| DDD | 一年中的日 (001 - 366) |
| IDDD | ISO 8601 方式的一年中的第几天(001 - 371;该年的第 1 天是第一个 ISO 周的星期一) |
| DD | 一个月中的第几天 (01 - 31) |
| D | 一周中的日,星期日 (1) 至星期六 (7) |
| ID | ISO 8601 规范的一周中的日,星期一 (1) 到星期日 (7) |
| W | 一个月中的第几周 (1-5)(第一周从每月的第一天开始) |
| WW | 一年中的第几周 (1-53)(第一周从一年中的第一天开始) |
| IW | ISO 8601 周编号方式的一年中的第几周(01-53;一年中的第一个星期四位于第 1 周) |
| CC | 世纪,例如 21、22 等。 |
| J | 儒略日(自 UTC 时间公元前 4714 年 11 月 24 日午夜 起的整数天) |
| RM | 大写的罗马数字月份 (I–XII; I=一月) |
| rm | 小写的罗马数字月份 (i–xii; i=一月) |
PostgreSQL TO_DATE 示例
以下语句将字符串 10 Feb 2017 转换为日期值:
SELECT TO_DATE('10 Feb 2017', 'DD Mon YYYY');
输出是:
TO_DATE
------------
2017-02-10
(1 row)
假设您要将字符串2017 Feb 10转换为日期值,可以应用模式YYYY Mon DD,如下:
SELECT TO_DATE('2017 Feb 20','YYYY Mon DD');
该函数返回以下输出:
TO_DATE
------------
2017-02-20
(1 row)
PostgreSQL TO_DATE 陷阱
如果传递无效的日期字符串,TO_DATE()函数将尝试将其转换为有效的日期,如果不能,则发出错误。例如:
SELECT TO_DATE('2017/02/30', 'YYYY/MM/DD');
PostgreSQL 发出以下错误:
ERROR: date/time field value out of range: "2017/02/30"
LINE 1: SELECT '2017/02/30'::date;
在本教程中,您学习了如何使用 PostgreSQL 的TO_DATE() 函数,将字符串文字转换为日期值。
了解更多
PostgreSQL 教程:日期函数
PostgreSQL 文档:数据类型格式化函数