Postgre选择日期="01/01/11"的内容



我有一个datetime字段在我的Postgresql,名为"dt"。我想做一些像

SELECT * FROM myTable WHERE extract (date from dt) = '01/01/11'

正确的语法是什么?

谢谢!

我认为您想将dt转换为date并固定日期文字的格式:

SELECT *
FROM table
WHERE dt::date = '2011-01-01' -- This should be ISO-8601 format, YYYY-MM-DD

或标准版本:

SELECT *
FROM table
WHERE CAST(dt AS DATE) = '2011-01-01' -- This should be ISO-8601 format, YYYY-MM-DD

extract函数不理解"日期",它返回一个数字。

PostgreSQL有很多日期/时间函数,请看这里。

在您的示例中,您可以使用:

SELECT * FROM myTable WHERE date_trunc('day', dt) = 'YYYY-MM-DD';

如果您经常运行这个查询,那么也可以使用date_trunc函数创建一个索引:

CREATE INDEX date_trunc_dt_idx ON myTable ( date_trunc('day', dt) );

这样做的一个好处是,如果需要的话,在时区方面有更多的灵活性,例如:

CREATE INDEX date_trunc_dt_idx ON myTable ( date_trunc('day', dt at time zone 'Australia/Sydney') );
SELECT * FROM myTable WHERE date_trunc('day', dt at time zone 'Australia/Sydney') = 'YYYY-MM-DD';

相关内容

  • 没有找到相关文章

最新更新