---把getdate()替換成你的日期字段就可以了, between and的2個日期分別是你說的2個年頭年尾的情況
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供桂東網(wǎng)站建設(shè)、桂東做網(wǎng)站、桂東網(wǎng)站設(shè)計、桂東網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、桂東企業(yè)網(wǎng)站模板建站服務,十年桂東做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務。
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查詢時間是一年中第幾周,使用函數(shù) datepart()。
例:查詢 ‘2017-1-1’是2017年的第幾周,語句如下
select?datepart(wk,'2017-1-1')
datepart函數(shù)說明
一、函數(shù)功能:DATEPART() 函數(shù)用于返回日期/時間的單獨部分,比如年、月、日、小時、分鐘等等。
二、語法:DATEPART(datepart,date)
三、參數(shù)說明:date?參數(shù)是合法的日期表達式。datepart?參數(shù)可以是下列的值:
四、實例演示
假設(shè)我們有下面這個 "Orders" 表:
我們使用如下 SELECT 語句:
SELECT?DATEPART(yyyy,OrderDate)?AS?OrderYear,
DATEPART(mm,OrderDate)?AS?OrderMonth,
DATEPART(dd,OrderDate)?AS?OrderDay
FROM?Orders
WHERE?OrderId=1
結(jié)果:
指定一個起始日,計算到該日的天數(shù),/7 得到經(jīng)過的周數(shù)。然後按這個周數(shù)分組。
1、最近一月比較簡單,取當前時間的年份和月份,拼接成當前月份1號。
2、最后一周:取當前的時間為參考,用datepart取出時間的周編號,進行篩選,獲取最近周1的日期,比如,表格a,日期字段rq
select?max(rq)?from?表格a?
where?datepart(weekday,rq)?=?2?and?rq??當前時間?按到?rq??本月1號;
就三個字段(內(nèi)容,創(chuàng)建日期,標志)
插入數(shù)據(jù)時標志初始為0,代表未提醒
定時掃描該表,
假設(shè)創(chuàng)建日期為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代表已經(jīng)日提醒過,2代表日周都提醒過,3代表全提醒過,如果用戶未反饋就依然把標志設(shè)為0,下次掃描時接著提醒