Abr*_*odj 40 sql postgresql datetime
我的Postgresql中有一个datetime字段,名为"dt".我想做点什么
SELECT * FROM myTable WHERE extract (date from dt) = '01/01/11'
Run Code Online (Sandbox Code Playgroud)
这样做的正确语法是什么?
谢谢!
mu *_*ort 81
我想你想你的投dt
到date
并解决您的日期文字的格式:
SELECT *
FROM table
WHERE dt::date = '2011-01-01' -- This should be ISO-8601 format, YYYY-MM-DD
Run Code Online (Sandbox Code Playgroud)
或标准版:
SELECT *
FROM table
WHERE CAST(dt AS DATE) = '2011-01-01' -- This should be ISO-8601 format, YYYY-MM-DD
Run Code Online (Sandbox Code Playgroud)
该extract
函数不理解"日期"并返回一个数字.
Hug*_*ugh 12
PostgreSQL 有许多可用的日期/时间函数,请参见此处。
在您的示例中,您可以使用:
SELECT * FROM myTable WHERE date_trunc('day', dt) = 'YYYY-MM-DD';
Run Code Online (Sandbox Code Playgroud)
如果您定期运行此查询,也可以使用该date_trunc
函数创建索引:
CREATE INDEX date_trunc_dt_idx ON myTable ( date_trunc('day', dt) );
Run Code Online (Sandbox Code Playgroud)
这样做的一个优点是,如果需要,时区具有更大的灵活性,例如:
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';
Run Code Online (Sandbox Code Playgroud)