繁体   English   中英

PostgreSQL:是否可以对字符串中具有日期时间的部分进行排序

[英]PostgreSQL: Is it possible to sort the part of the string has datetime

我有包含数据序列和日期时间类型的列的名称,如下所示:

DATA01_0003_20210126135705.zip
DATA01_0002_20210127135030.zip
DATA01_0004_20210126142913.zip

我要根据datetime ORDER BY,然后是sequence string,可以吗?

DATA01_0002_20210127135030.zip
DATA01_0004_20210126142913.zip
DATA01_0003_20210126135705.zip

我尝试了如下语句,但它在日期时间之前按顺序排序:
SELECT filename FROM tblData ORDER BY filename

DATA01_0002_20210127135030.zip
DATA01_0003_20210126135705.zip
DATA01_0004_20210126142913.zip

SELECT filename FROM tblData ORDER BY filename DESC

DATA01_0004_20210126142913.zip
DATA01_0003_20210126135705.zip
DATA01_0002_20210127135030.zip

在 postgresql 中,您可以按表达式排序。

要按文件的时间戳排序,有必要从字符串中提取它。 根据您的示例,我猜测最后一个_之后的文本将具有日期。 如果该假设成立,那么以下将按日期排序

SELECT filename from tbldata
order by reverse(split_part(reverse(filename), '_', 1))

如果_的数量是固定的,则不需要使用两个reverse的技巧。 您可以改为order by split_part(filename, '_', 3)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM