从字符串中投射 Postgres 日期
Postgres Date Cast from a String
我有一个 Date/time,格式为 DD-MON-YYHH24MISS。我必须将其转换为日期,然后按日期按 desc 顺序对数据进行排序。以下查询给出了错误的结果:
SELECT to_date(substring(td."date", 1,10), 'dd-MON-yy') 作为日期
从 tbl 按日期排序;
这里有什么错误?我得到的日期为“2122-01-08”
您应该使用第一个 九个 ,而不是十个字符的子串:
SELECT TO_DATE(SUBSTRING("date", 1, 9), 'DD-MON-YY') AS date
FROM tbl
ORDER BY date DESC;
它适用于 varchar 和 timestamp 数据类型:
CREATE TABLE tbl ("date" TIMESTAMP);
INSERT INTO tbl ("date") VALUES ('01.01.2022 12:53:21');
INSERT INTO tbl ("date") VALUES ('05.09.2022 21:01:18');
INSERT INTO tbl ("date") VALUES ('22.03.2022 20:13:10');
INSERT INTO tbl ("date") VALUES ('04.05.2022 21:00:00');
SELECT "date"::DATE
FROM tbl
ORDER BY "date"::DATE DESC
Returns:
date
2022-01-01 12:53:21
2022-09-05 21:01:18
2022-03-22 20:13:10
2022-05-04 21:00:00
date
2022-09-05
2022-05-04
2022-03-22
2022-01-01
我有一个 Date/time,格式为 DD-MON-YYHH24MISS。我必须将其转换为日期,然后按日期按 desc 顺序对数据进行排序。以下查询给出了错误的结果:
SELECT to_date(substring(td."date", 1,10), 'dd-MON-yy') 作为日期 从 tbl 按日期排序;
这里有什么错误?我得到的日期为“2122-01-08”
您应该使用第一个 九个 ,而不是十个字符的子串:
SELECT TO_DATE(SUBSTRING("date", 1, 9), 'DD-MON-YY') AS date
FROM tbl
ORDER BY date DESC;
它适用于 varchar 和 timestamp 数据类型:
CREATE TABLE tbl ("date" TIMESTAMP);
INSERT INTO tbl ("date") VALUES ('01.01.2022 12:53:21');
INSERT INTO tbl ("date") VALUES ('05.09.2022 21:01:18');
INSERT INTO tbl ("date") VALUES ('22.03.2022 20:13:10');
INSERT INTO tbl ("date") VALUES ('04.05.2022 21:00:00');
SELECT "date"::DATE
FROM tbl
ORDER BY "date"::DATE DESC
Returns:
date |
---|
2022-01-01 12:53:21 |
2022-09-05 21:01:18 |
2022-03-22 20:13:10 |
2022-05-04 21:00:00 |
date |
---|
2022-09-05 |
2022-05-04 |
2022-03-22 |
2022-01-01 |