Postgres从字符串中进行日期转换



我有一个DD-MON-YYHH24MISS格式的日期/时间。我必须将其转换为日期,然后按desc顺序按日期对数据进行排序。以下查询给出错误结果:

选择to_date(子字符串(td."date",1,10(,"dd MON yy"(作为日期从tbl订单按日期desc;

这里有什么错误?我得到日期为"2122-01-08">

您应该取第一个九个而不是十个字符的子字符串:

SELECT TO_DATE(SUBSTRING("date", 1, 9), 'DD-MON-YY') AS date
FROM tbl
ORDER BY date DESC;

它适用于varchar时间戳数据类型:

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

退货:

日期
2022-01-01 12:53:21
2022-09-05 21:01:18
2022-03-22 20:13:10
2022-05-04 21:00:00

相关内容

  • 没有找到相关文章

最新更新