--这样用不到索引啊 SELECT * FROM TB WHERE loginTime >= CONVERT(CHAR(10), GETDATE(), 120) AND loginTime < CONVERT(CHAR(10), GETDATE()+1, 120)
where convert(date,logintime) between convert(date,getdate()) and convert(date,dateadd(dd,1,getdate())
select case when CONVERT(varchar(10),logintime,120)= CONVERT(varchar(10),logouttime,120) then '同一天' else '不同天' end from tb
select * from loginTab where convert(varchar(10),LoginTime,120)=convert(varchar(10),getdate(),120)
SELECT * FROM TB WHERE loginTime >= CONVERT(DATETIME,CONVERT(CHAR(8),GETDATE(),112)) AND loginTime < CONVERT(DATETIME,CONVERT(CHAR(8),GETDATE()+1,112))--算出当前天起始时间和结束时间 DECLARE @dDayStart DATETIME; DECLARE @dDayEnd DATETIME; SET @dDayStart=CONVERT(DATETIME,CONVERT(CHAR(8),GETDATE(),112)); SET @dDayEnd=CONVERT(DATETIME,CONVERT(CHAR(8),GETDATE()+1,112));
SELECT @dDayStart,@dDayEnd
select * from tbl where case when logintime = convert(char(10),createdate,111) then ...(加其他语句) end
感觉提供的函数还是有些麻烦。。想oracle里面直接to_date多好
where datediff(day,时间,getdate())=0 不建议合作函数,建议使用 时间 between xxx and xxx
强烈建议使用:select a.* from LoginTab a where a.LoginTime>=CONVERT(VARCHAR(10),GETDATE(),120) and a.LoginTime<CONVERT(VARCHAR(10),DateAdd(Day,1,GETDATE()),120)要避免在字段上使用函数运算。会降低性能。若LoginTime建有索引,则索引键会失效。
SELECT *
FROM TB
WHERE loginTime >= CONVERT(CHAR(10), GETDATE(), 120)
AND loginTime < CONVERT(CHAR(10), GETDATE()+1, 120)
from tb
FROM TB
WHERE loginTime >= CONVERT(DATETIME,CONVERT(CHAR(8),GETDATE(),112))
AND loginTime < CONVERT(DATETIME,CONVERT(CHAR(8),GETDATE()+1,112))--算出当前天起始时间和结束时间
DECLARE @dDayStart DATETIME;
DECLARE @dDayEnd DATETIME;
SET @dDayStart=CONVERT(DATETIME,CONVERT(CHAR(8),GETDATE(),112));
SET @dDayEnd=CONVERT(DATETIME,CONVERT(CHAR(8),GETDATE()+1,112));
SELECT @dDayStart,@dDayEnd
oracle 里面的to_date 也是经过一系列操作,性能而已,都一样。