如何在Oracle SQL Developer中用SQL查询获取当日数据
获取Oracle中Record_details表当日数据的查询方法
你的表Record_details使用Oracle的TIMESTAMP(6)类型存储日期时间,直接用Date = '?'无法匹配(因为TIMESTAMP包含时分秒信息),以下是几种可行的查询写法:
方法1:截断时间部分匹配日期
用TRUNC()函数去除时间戳的时分秒部分,仅保留日期进行对比:
SELECT * FROM Record_details WHERE TRUNC(Date) = TRUNC(SYSDATE);
TRUNC(SYSDATE)获取当前系统日期的纯日期部分,TRUNC(Date)将每条记录的时间戳转为纯日期,两者相等即表示是当日数据。
方法2:日期范围查询(推荐,性能更优)
如果Date字段建有索引,这种写法可以利用索引提升查询效率:
SELECT * FROM Record_details WHERE Date >= TRUNC(SYSDATE) AND Date < TRUNC(SYSDATE) + INTERVAL '1' DAY;
该语句查询从当日0点整到次日0点前的所有数据,覆盖当日所有时间戳记录。
方法3:格式化字符串匹配
将时间戳格式化为日期字符串后,与当日日期字符串对比:
SELECT * FROM Record_details WHERE TO_CHAR(Date, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD');
注意:这种写法会使Date字段的索引失效,数据量大时不推荐使用。
内容的提问来源于stack exchange,提问作者Ashish Saxena
相关产品推荐
相关产品推荐

