postger中實現oracle中trunc日期處理功能
問題描述
需要將下面的oracle中的sql轉化成poetger的sql,由於end_time和start_time屬於date類型,相加減得出為天,乘24再乘3600得出秒數,如果是時間不為整天會得出浮點數。
select (TRUNC((a.end_Time - a.start_time)*24*3600)) as interval from table_name a
轉化後postger的sql語句
由於oracle中的date帶上了時分秒,所以表中字段對應postger中timestamp類型,兩者相加減直接得出秒數
select EXTRACT(EPOCH FROM a.end_time) - EXTRACT(EPOCH FROM a.start_time) as interval from table_name as a
EPOCH FROM的作用將timestamp轉化成數字時間戳(postger這點很奇怪,timestamp翻譯為時間戳,不就是數字類型秒數嗎,但是人家打印出來就是格式化的時間)
EXTRACT的作用是從一个日期或时间型的字段内抽取年、月、日、时、分、秒数据