十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
---把getdate()替换成你的日期字段就可以了, between and的2个日期分别是你说的2个年头年尾的情况
成都创新互联专业为企业提供桂东网站建设、桂东做网站、桂东网站设计、桂东网站制作等企业网站建设、网页设计与制作、桂东企业网站模板建站服务,十年桂东做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
select case when getdate()=cast('2014/1/1' as datetime) then datepart(week,getdate()) else 1 end as 第几周
--from table_name
where getdate() between (case when datepart(weekday,cast('2014/1/1' as datetime))1 then
cast('2014/1/1' as datetime)-datepart(weekday,cast('2014/1/1' as datetime))+2
end )
and
(case when datepart(weekday,cast('2014/12/31' as datetime))6 then
cast('2014/12/31' as datetime)-datepart(weekday,cast('2014/12/31' as datetime))+1
end )
SQL SERVER查询时间是一年中第几周,使用函数 datepart()。
例:查询 ‘2017-1-1’是2017年的第几周,语句如下
select datepart(wk,'2017-1-1')
datepart函数说明
一、函数功能:DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
二、语法:DATEPART(datepart,date)
三、参数说明:date 参数是合法的日期表达式。datepart 参数可以是下列的值:
四、实例演示
假设我们有下面这个 "Orders" 表:
我们使用如下 SELECT 语句:
SELECT DATEPART(yyyy,OrderDate) AS OrderYear,
DATEPART(mm,OrderDate) AS OrderMonth,
DATEPART(dd,OrderDate) AS OrderDay
FROM Orders
WHERE OrderId=1
结果:
指定一个起始日,计算到该日的天数,/7 得到经过的周数。然後按这个周数分组。
1、最近一月比较简单,取当前时间的年份和月份,拼接成当前月份1号。
2、最后一周:取当前的时间为参考,用datepart取出时间的周编号,进行筛选,获取最近周1的日期,比如,表格a,日期字段rq
select max(rq) from 表格a
where datepart(weekday,rq) = 2 and rq 当前时间 按到 rq 本月1号;
就三个字段(内容,创建日期,标志)
插入数据时标志初始为0,代表未提醒
定时扫描该表,
假设创建日期为2011-01-15
datediff(day,'2011-01-15',getdate())=1 --日
datediff(week,'2011-01-15',getdate())=1 --周
datediff(month,'2011-01-15',getdate())=1 --月
如过有符合条件的就提醒,然后把标志重置一下,比如1代表已经日提醒过,2代表日周都提醒过,3代表全提醒过,如果用户未反馈就依然把标志设为0,下次扫描时接着提醒