簡體   English   中英

如何使用默認時間戳定義今天的日期

[英]How define today date with Default timestmp

我正在使用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',所以沒有行我該如何管理今天的日期詳細信息

更新:一種方法

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演示

從ttodo中選擇*,其中(ttodo.todoplandate :: date = current_date)或(ttodo.todoplandate :: date <current_date

我認為更簡單的方法是將字段轉換為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提出的內容 ,但間隔正確:

SELECT ttodoid ,date,details FROM ttodo
WHERE date >= date_trunc('day', current_timestamp)
      AND date < (date_trunc('day', current_timestamp) + interval '1day');

這種方法的優勢在於它只能在date字段上使用索引,如果您已經擁有索引的話,那就很好了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM