sql怎么查昨天的数据

时间:2022-10-01 19:33:50
弱弱的问下,我想查询表里面昨天的数据,表名test 日期字段是 wit_date
我执行:SELECT * FROM test where DATEDIFF(d,wit_date,GETDATE()) = 1 提示我 ORA-00904:"DATEDIFF":标识符无效

请问为什么? 如果错了那我要查昨天数据,sql该怎么写啊

13 个解决方案

#1


SELECT * FROM test where wit_date = sysdate - 1

这样可以吗?

#2


select * from test where wit_date < trunc(sysdate)

#3


你们俩的都不行,1楼兄弟的查不出数据但不报错,2楼的查出了一堆,不是昨天的数据

#4


select * from test where wit_date < trunc(sysdate) and wit_date >trunc(sysdate-1)

#5


SELECT * FROM test where floor(sysdate - wit_date) = 1 

#6


引用 4 楼 anly_hz 的回复:
select * from test where wit_date < trunc(sysdate) and wit_date >trunc(sysdate-1)


这个sql能行,我以前查过

#7


SELECT * FROM test where to_char(wit_date,'yyyy-mm-dd') = to_char(sysdate - 1,
,'yyyy-mm-dd');
你说1楼查不出数据应该是因为你的数据库里的日期是带时分秒的,所以两个日期不可能相等,你按照我给你的思路转换一下把时分秒去掉,日期就相等了

#8


SELECT * FROM test where DATEDIFF(d,witdate) = 1

#9


都装换成响应的格式

#10


这也要看你的数据库中的字段类型和格式啊
引用 8 楼 softroad 的回复:
SELECT * FROM test where DATEDIFF(d,witdate) = 1


或者也可以是
select * from test where wit_date = to_char(sysdate - 1, '你数据库中的字段格式'))

#11


引用 10 楼 lyhmy 的回复:
这也要看你的数据库中的字段类型和格式啊

引用 8 楼 softroad 的回复:
SELECT * FROM test where DATEDIFF(d,witdate) = 1


或者也可以是
select * from test where wit_date = to_char(sysdate - 1, '你数据库中的字段格式') )


纠正下,上面的多写了个右括号

#12


SELECT * FROM test WHERE DATEDIFF(day, witdate, getdate())=1

#13


试了一下select * from test where wit_date < trunc(sysdate) and wit_date >trunc(sysdate-1) 这个可以,多谢上面的兄弟们,结贴给分!

#1


SELECT * FROM test where wit_date = sysdate - 1

这样可以吗?

#2


select * from test where wit_date < trunc(sysdate)

#3


你们俩的都不行,1楼兄弟的查不出数据但不报错,2楼的查出了一堆,不是昨天的数据

#4


select * from test where wit_date < trunc(sysdate) and wit_date >trunc(sysdate-1)

#5


SELECT * FROM test where floor(sysdate - wit_date) = 1 

#6


引用 4 楼 anly_hz 的回复:
select * from test where wit_date < trunc(sysdate) and wit_date >trunc(sysdate-1)


这个sql能行,我以前查过

#7


SELECT * FROM test where to_char(wit_date,'yyyy-mm-dd') = to_char(sysdate - 1,
,'yyyy-mm-dd');
你说1楼查不出数据应该是因为你的数据库里的日期是带时分秒的,所以两个日期不可能相等,你按照我给你的思路转换一下把时分秒去掉,日期就相等了

#8


SELECT * FROM test where DATEDIFF(d,witdate) = 1

#9


都装换成响应的格式

#10


这也要看你的数据库中的字段类型和格式啊
引用 8 楼 softroad 的回复:
SELECT * FROM test where DATEDIFF(d,witdate) = 1


或者也可以是
select * from test where wit_date = to_char(sysdate - 1, '你数据库中的字段格式'))

#11


引用 10 楼 lyhmy 的回复:
这也要看你的数据库中的字段类型和格式啊

引用 8 楼 softroad 的回复:
SELECT * FROM test where DATEDIFF(d,witdate) = 1


或者也可以是
select * from test where wit_date = to_char(sysdate - 1, '你数据库中的字段格式') )


纠正下,上面的多写了个右括号

#12


SELECT * FROM test WHERE DATEDIFF(day, witdate, getdate())=1

#13


试了一下select * from test where wit_date < trunc(sysdate) and wit_date >trunc(sysdate-1) 这个可以,多谢上面的兄弟们,结贴给分!