sql查询当天记录
[transaction]表中有当天的记录,我用select*from[transaction]whereDateDiff(dd,transday,getdate())=...
[transaction]表中有当天的记录,我用select * from [transaction] where DateDiff(dd,transday,getdate())=0查的话查不出记录,请问这句有哪里写错了么?怎么改呢?
展开
展开全部
1、SQL在查询当天记录时要注意是从当天的0点0分0秒0毫秒开始,到次日0点0分0秒0毫秒截止,但不包含次日的0点0分0秒0毫秒。
2、注意:在不同数据库产品中,获得当天日期的函数不一样。
MSSQL获得当前日期:convert(varchar(10),Getdate(),120)
MYSQL获得当前日期:date(now())
Oracle获得当前日期:to_char(sysdate,'yyyy-mm-dd')
Access获得当前日期:date()
3、在各个数据库里获得当天的记录写法为(假设表名为:Table_1,日期列名为:date_col):
MSSQL获得当天记录:
select * from table_1 where date_col>=convert(varchar(10),Getdate(),120) and date_col<convert(varchar(10),dateadd(d,1,Getdate()),120)
MYSQL获得当天记录:
select * from table_1 where date_col>=date(now()) and date_col<DATE_ADD(date(now()),INTERVAL 1 DAY)
Oracle获得当天记录:
select * from table_1 where date_col>=to_char(sysdate,'yyyy-mm-dd') and date_col<to_char(sysdate+1,'yyyy-mm-dd')
Access获得当天记录:
select * from table_1 where date_col>=date() and date_col<DateAdd("d",1,date())
4、另外,在查询的时候,尽量不要对列进行运算,因为日期列上若有索引,就无法使用索引了。
展开全部
数据库服务器时间是正确,getdate()取的是数据库服务器日期时间
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的语法没错啊,transday是datetime 类型吧
追问
是datetime类型的,而且我使用datetimepicker把日期选择当天是可以查出来的,但是用这个语句就显示不出来
追答
你是在编程工具中执行的语句还是在SQL SERVER 查询分析器中执行的? 我在查询分析器中建了个测试表,可以查出来啊
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate
结果1
select * from [transaction] where transday=subStr(GETDATE(),0,10)
select * from [transaction] where subStr(GETDATE(),0,10) like transday||'%'
结果1
select * from [transaction] where transday=subStr(GETDATE(),0,10)
select * from [transaction] where subStr(GETDATE(),0,10) like transday||'%'
追问
substr报错,说是无法识别= =
追答
subString
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询