这似乎很简单。但我真的很喜欢我的工作。请帮忙。
我使用的是Oracle数据库,我的表中有一个名为load date的列,其中包含以下条目:
12/11/2014 1:50:23 PM
12/11/2014 1:53:03 PM
3/17/2015 7:23:53 AM
11/29/2014 3:53:20 AM
我希望从17月3日的表中检索记录。我该怎么做?
答案 0 :(得分:3)
您可以使用以下内容:
不带参数的TRUNC会从DATE
中删除小时,分钟和秒
SELECT *
FROM YourTable
WHERE TRUNC(LoadDate) = TO_DATE('03-17-2015', 'MM-DD-YYYY')
或者您可以使用以下内容:
SELECT *
FROM YourTable
WHERE LoadDate >= TO_DATE('2015-03-17', 'YYYY-MM-DD')
AND LoadDate < TO_DATE('2015-03-18', 'YYYY-MM-DD')
答案 1 :(得分:1)
对数据库中的列使用TRUNC会产生令人遗憾的效果,即TRUNC函数必须应用于表中每一行的特定字段(在本例中为LOAD_DATE)。这往往很慢。相反,我建议使用BETWEEN测试,如下所示:
SELECT *
FROM YOUR_TABLE
WHERE LOAD_DATE BETWEEN TO_DATE('17-MAR-2015 00:00:00', 'DD-MON-YYYY HH24:MI:SS')
AND TO_DATE('17-MAR-2015 23:59:59', 'DD-MON-YYYY HH24:MI:SS')
分享并享受。
答案 2 :(得分:0)
它可能适合您:
select * from YourTable where (extract(day from LoadDate) =17 ) and (extract(month from LoadDate) =3);