我是Oracle数据库的新手。我对Oracle中的日期时间概念知之甚少。 我面临的问题是检索在特定日期输入的记录。但是当我在数据库上执行SQL查询时,它返回零记录。
数据库具有日期字段,其中包含具有日期时间值的记录。
SQL查询:SELECT * FROM table WHERE table.daterecord = to_date(03-Mar-2010)
如果我将查询更改为
,则不会返回任何记录SELECT * FROM table WHERE table.daterecord > to_date(04-Mar-2010)
它将返回一些记录。 以上差异是因为时间。我如何从日期中提取时间值。我可以使用截断功能吗?提前感谢您的宝贵建议。
答案 0 :(得分:15)
是的,您可以使用TRUNC功能。
SELECT *
FROM table
WHERE TRUNC(table.daterecord) = TO_DATE('03-Mar-2010', 'DD-MON-RRRR')
答案 1 :(得分:7)
请参阅此SO以获取“How to correctly handle dates in queries constraints”的建议?
除了已经提供的答案之外,我建议使用范围,因为这更容易索引:
SELECT *
FROM table
WHERE table.daterecord >= TO_DATE('03-Mar-2010', 'DD-MON-RRRR')
AND table.daterecord < TO_DATE('04-Mar-2010', 'DD-MON-RRRR')
答案 2 :(得分:4)
您可以使用TRUNC
例如:
SELECT *
FROM table
WHERE TRUNC(table.daterecord) = TO_DATE('03-Mar-2010', 'DD-MON-RRRR')