查询本周 datediff(week,create_day-1,getdate())=0这样写 在星期天就查不出数据来 datediff(week,create_day,getdate())=0这样写 就查不出星期天的数据来 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select * from tb where create_day between DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) and DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) + 6 --当使用 week 作为日期部分时,DATEDIFF 返回两个日期(包括第二个日期但不包括第一个日期)之间星期日的数目。SELECT datediff(week,'2011-5-1','2011-5-8') declare @dt as datetimeset @dt = '2011-03-13'select case when datepart(weekday,@dt) = 1 then convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0) - 7,120) + ' - ' + convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0) + 6 - 7,120) else convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0),120) + ' - ' + convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0) + 6,120) end/* ----------------------- 2011-03-07 - 2011-03-13(所影响的行数为 1 行)*/set @dt = '2011-03-14'select case when datepart(weekday,@dt) = 1 then convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0) - 7,120) + ' - ' + convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0) + 6 - 7,120) else convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0),120) + ' - ' + convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0) + 6,120) end/* ----------------------- 2011-03-14 - 2011-03-20(所影响的行数为 1 行)*/ 因为系统默认是星期天为一个星期的第一天,要设置一个星期的第一天为星期一就可以查到星期天的数据。set DATEFIRST=1 SET DATEFIRST 1datediff(week,dateadd(day,-@@DATEFIRST,'2011-05-09'),getdate())=0 SET DATEFIRST 1改变星期的默认起点 datediff(week,create_day-1,getdate())=0和这句一样 datediff(week,create_day-1,getdate())=0datediff(week,dateadd(day,-@@DATEFIRST,'2011-05-09'),getdate())=0查出来的数据确实是周一到周末的 但是到了每周的周日 查出来的数据就是下周的周一到周末的数据 SELECT DATEADD(Day,1-(DATEPART(Weekday,GETDATE())+@@DATEFIRST-2)%7-1,GETDATE())SELECT DATEADD(Day,1-(DATEPART(Weekday,GETDATE())+@@DATEFIRST-2)%7+5,GETDATE()) SQL 语句 这个功能SQLSERVER能实现吗? 如何在一個varchar字段中[50,100]查找50到100的紀錄 SQL语句 查找第 X 条 到第 X+N条 数据 怎么写 能不能自定义自动编号的格式? 如何学习写存储过程? sqlserver:事务(进程 ID 82)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务 *列不固定的临时表 如何选择除了某一固定列以外的列 数据库升级 紧急求助,如何用一个SQL语句完成数据继承? 整数转IP adodc控件绑定DATAGRID控件的问题
and DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) + 6
SELECT datediff(week,'2011-5-1','2011-5-8')
set @dt = '2011-03-13'
select case when datepart(weekday,@dt) = 1
then convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0) - 7,120) + ' - ' + convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0) + 6 - 7,120)
else convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0),120) + ' - ' + convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0) + 6,120)
end
/*
-----------------------
2011-03-07 - 2011-03-13(所影响的行数为 1 行)
*/
set @dt = '2011-03-14'
select case when datepart(weekday,@dt) = 1
then convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0) - 7,120) + ' - ' + convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0) + 6 - 7,120)
else convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0),120) + ' - ' + convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0) + 6,120)
end
/*
-----------------------
2011-03-14 - 2011-03-20(所影响的行数为 1 行)
*/
set DATEFIRST=1
datediff(week,dateadd(day,-@@DATEFIRST,'2011-05-09'),getdate())=0
改变星期的默认起点
和这句一样
datediff(week,dateadd(day,-@@DATEFIRST,'2011-05-09'),getdate())=0
查出来的数据确实是周一到周末的 但是到了每周的周日 查出来的数据就是下周的周一到周末的数据