[Postgre]比較日期時間

一般比較日期時間,使用>=或=<都可以很容易做比較
但如果遇到要指定等於的時候,有時會遇到一點問題

在postgre如果資料格式是timestamp without time zone
每次存入的時候會紀錄到毫秒,所以這個時候想找等於某個時間的時候會找不到
這個時候可以使用::timestamp(0)來去除毫秒,再做比較
它可用在select的欄位,也可以在where的欄位做格式化

例如
select update_time::timestamp(0) from some_table

select * from some_table where update_time::timestamp(0) = '2016-08-23 10:18:50'

複雜一點的例子
有兩張表格t1,t2,要找出t1所有資料的update_time等於t2某一個群組最新一筆更新資料的update_time時
select * from t1
where t1.update_time::timestamp(0) = (
select update_time::timestamp(0) from t2 where group_id = 1234
order by id desc limit 1
)

以上

Leave a Reply

你的電子郵件位址並不會被公開。