我正在使用postgressql我想获取currentdate的数据,我想根据日期过滤数据
在数据库中,我的plandate字段定义为Time stamp with time zone
,因此其显示格式为2013-09-01 03:22:01.438348+05:30
我的查询就像这样
select ttodoid ,date,details from ttodo where date=currentdate():
但是根据这个结果,currentdate函数给我的日期'2013-10-06'是没有行我怎么能管理它今天的日期细节
答案 0 :(得分:0)
更新:一种方法
SELECT *
FROM ttodo
WHERE date BETWEEN DATE_TRUNC('day', CURRENT_TIMESTAMP)
AND DATE_TRUNC('day', CURRENT_TIMESTAMP)
+ INTERVAL '1 DAY'
- INTERVAL '1 MICROSECOND';
或
SELECT *
FROM ttodo
WHERE date >= DATE_TRUNC('day', CURRENT_TIMESTAMP)
AND date < DATE_TRUNC('day', CURRENT_TIMESTAMP)
+ INTERVAL '1 DAY';
这是 SQLFiddle 演示
答案 1 :(得分:0)
从ttodo中选择*(ttodo.todoplandate :: date = current_date)或 (ttodo.todoplandate :: date&lt; current_date
答案 2 :(得分:0)
我认为更简单的方法就是将您的字段转换为date
:
SELECT ttodoid ,date,details FROM ttodo
WHERE CAST(date AS DATE) = current_date;
请注意,如果您希望将此查询编入索引,则必须使用强制转换创建索引:
CREATE INDEX idx_ttodo_date ON ttodo ((CAST(date AS DATE)));
另一种方法是,不是投射字段,而是检查间隔,类似于petern proposed,但间隔正确:
SELECT ttodoid ,date,details FROM ttodo
WHERE date >= date_trunc('day', current_timestamp)
AND date < (date_trunc('day', current_timestamp) + interval '1day');
这种方法的优势在于它只能在date
字段上使用索引,如果您已经拥有它,那就很好。