SQLServer查询某一日期的记录,sql语句怎么写

时间:2021-02-14 01:04:29
我的表里面sj字段是datetime类型,要查询某一个日期的所有记录,sql语句怎么写?
ndatetime是要查询的日期变量
Select * from table where sj = convert( ndatetime ,'YYYY-MM-DD')

14 个解决方案

#1


Select * from table where datediff(dd,@ndatetime,sj)=0

#2


Select * from table where sj='YYYY-MM-DD'

#3


where datediff(day,sj,ndatetime)=0

#4


引用楼主 suekey 的帖子:
我的表里面sj字段是datetime类型,要查询某一个日期的所有记录,sql语句怎么写? 
ndatetime是要查询的日期变量 
Select * from table where sj = convert( ndatetime ,'YYYY-MM-DD')


select * from table where convert(varchar(10),sj,120) = 'YYYY-MM-DD'

select * from table where datediff(day,sj,'YYYY-MM-DD') = 0

#5


Select * from table where convert(varchar(10),sj,120) ='YYYY-MM-DD'

#6


Select * 
from tb
where datediff(dd,@ndatetime,sj)=0

#7


select * from table where convert(varchar(10),sj,120) = 'YYYY-MM-DD'

#8



Select * from table where datediff(dd,@ndatetime,sj)=0

#9


引用 4 楼 dawugui 的回复:
引用楼主 suekey 的帖子:
我的表里面sj字段是datetime类型,要查询某一个日期的所有记录,sql语句怎么写? 
ndatetime是要查询的日期变量 
Select * from table where sj = convert( ndatetime ,'YYYY-MM-DD') 




SQL codeselect * from table where convert(varchar(10),sj,120) = 'YYYY-MM-DD'

select * from table where datediff(day,sj,'YYYY-MM-DD') = 0

回来了噶。。。

#10


  select * from table where sj='     '

#11


select * from tablename where convert(varchar(10),sj,120) = 'YYYY-MM-DD'

#12



select * from tablename where sj>= 'YYYY-MM-DD'
and sj<DateAdd(day,1,'YYYY-MM-DD')


如果SJ 有索引的话 这样查询可以充分利用,对于大型表作用非常明显.

#13


引用 11 楼 donghuizhang 的回复:
SQL codeselect * from tablename where convert(varchar(10),sj,120) = 'YYYY-MM-DD'

#14


不建议你在 ndatetime 字段中运算后再做比较,这样SQL优化器就不能使用索引了
在数据量大时,你要在查询条件 ndatetime 上做索引,用以下查询

DECLARE @start datetime, @end datetime;
set @start='2009-01-01';
set @end = @start+1 ; -- 加一天
Select * from table where ndatetime >= @start and ndatetime < @end
-- 注意Start是 大于等于, End 是 小于

#1


Select * from table where datediff(dd,@ndatetime,sj)=0

#2


Select * from table where sj='YYYY-MM-DD'

#3


where datediff(day,sj,ndatetime)=0

#4


引用楼主 suekey 的帖子:
我的表里面sj字段是datetime类型,要查询某一个日期的所有记录,sql语句怎么写? 
ndatetime是要查询的日期变量 
Select * from table where sj = convert( ndatetime ,'YYYY-MM-DD')


select * from table where convert(varchar(10),sj,120) = 'YYYY-MM-DD'

select * from table where datediff(day,sj,'YYYY-MM-DD') = 0

#5


Select * from table where convert(varchar(10),sj,120) ='YYYY-MM-DD'

#6


Select * 
from tb
where datediff(dd,@ndatetime,sj)=0

#7


select * from table where convert(varchar(10),sj,120) = 'YYYY-MM-DD'

#8



Select * from table where datediff(dd,@ndatetime,sj)=0

#9


引用 4 楼 dawugui 的回复:
引用楼主 suekey 的帖子:
我的表里面sj字段是datetime类型,要查询某一个日期的所有记录,sql语句怎么写? 
ndatetime是要查询的日期变量 
Select * from table where sj = convert( ndatetime ,'YYYY-MM-DD') 




SQL codeselect * from table where convert(varchar(10),sj,120) = 'YYYY-MM-DD'

select * from table where datediff(day,sj,'YYYY-MM-DD') = 0

回来了噶。。。

#10


  select * from table where sj='     '

#11


select * from tablename where convert(varchar(10),sj,120) = 'YYYY-MM-DD'

#12



select * from tablename where sj>= 'YYYY-MM-DD'
and sj<DateAdd(day,1,'YYYY-MM-DD')


如果SJ 有索引的话 这样查询可以充分利用,对于大型表作用非常明显.

#13


引用 11 楼 donghuizhang 的回复:
SQL codeselect * from tablename where convert(varchar(10),sj,120) = 'YYYY-MM-DD'

#14


不建议你在 ndatetime 字段中运算后再做比较,这样SQL优化器就不能使用索引了
在数据量大时,你要在查询条件 ndatetime 上做索引,用以下查询

DECLARE @start datetime, @end datetime;
set @start='2009-01-01';
set @end = @start+1 ; -- 加一天
Select * from table where ndatetime >= @start and ndatetime < @end
-- 注意Start是 大于等于, End 是 小于