我有一张带有“create_date”列的表。我想选择从前一天下午 6 点到今天下午 6 点插入的记录。每天都可以获取这些数据,无需手动输入日期和时间。
那么任何人都可以帮助我编写一个查询来获取符合此条件的记录。
列数据类型为日期。
提前致谢。
最佳答案
对于前一天下午 6 点,您可以使用 TRUNC(SYSDATE -1)
,这会将时间部分截断为 00:00:00
然后添加 18 小时。同样,对于今天,做 TRUNC(SYSDATE)
并添加 18 小时。
SQL> SELECT to_char(trunc(SYSDATE -1) + 18/24,'mm/dd/yyyy hh24:mi:ss')
2 FROM dual;
TO_CHAR(TRUNC(SYSDA
-------------------
02/25/2015 18:00:00
SQL>
所以,截断(SYSDATE -1)+ 18/24 为您提供昨天的日期为下午 6 点。
测试用例:
SQL> WITH DATA AS
2 ( SELECT 'text' col, SYSDATE create_date FROM dual
3 )
4 SELECT *
5 FROM DATA
6 WHERE create_date
7 BETWEEN (TRUNC(sysdate -1) + 18/24) AND (TRUNC(sysdate) + 18/24)
8 /
COL CREATE_DA
---- ---------
text 26-FEB-15
SQL>
关于sql - 检索从前一天下午 6 点到今天下午 6 点的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28736490/