首页 > 解决方案 > 如何在 postgres 中按自定义日期格式的顺序查询?

问题描述

我有一个带有“日期”列的 postgres 表,它是一个具有基本 javascript 日期格式的字符串:

"Tue Dec 29 2020 23:16:54 GMT-0800 (Pacific Standard Time)"

我想知道是否有一种按日期查询的方法,即使它是这样的字符串格式。在我的节点后端,我目前正在这样做:

  pool.query("SELECT * FROM table WHERE field1 = $1 ORDER BY date DESC LIMIT 10", [val1], (err, table) => {
      if(err) {
        return res.status(400)
        done()
      } else {
        res.json(table.rows)
      }
    })

起初这似乎有效,但由于添加了更多记录,它并没有真正正常工作。如果有一个不涉及重做日期列的修复程序,我将非常感激,因为我已经围绕该日期字符串格式构建了很多代码。先感谢您。

标签: javascriptnode.jspostgresql

解决方案


正如评论者所指出的,时间戳列比字符串列更好地为您服务。但是,如果您无法更改架构,则可以在按其排序之前将时间戳字符串转换为实际时间戳,如下所示 -

SELECT * FROM table 
WHERE field1 = $1 
ORDER BY to_timestamp(date, 'Dy Mon DD YYYY HH24:MI:SS') DESC 
LIMIT 10

推荐阅读