我有日期和日期。現在我想知道當天是第一還是第二還是第三或第四周。需要從sql中的日期查找第n次出現的日期號
假設我今天通過日期。然後它應該返回本月的「第一個星期二」。
如果我通過2013年5月18日,那麼它應該返回「本月的第3個星期六」。 如果我通過2013年5月31日,那麼它應該返回「本月的第5個星期五」。
我該如何做到這一點?
我有日期和日期。現在我想知道當天是第一還是第二還是第三或第四周。需要從sql中的日期查找第n次出現的日期號
假設我今天通過日期。然後它應該返回本月的「第一個星期二」。
如果我通過2013年5月18日,那麼它應該返回「本月的第3個星期六」。 如果我通過2013年5月31日,那麼它應該返回「本月的第5個星期五」。
我該如何做到這一點?
在這裏你去
DECLARE @date DATETIME;
SET @date = '2013-08-30'
select
case when DATEPART(dd,@date)<=7 then '1st '+datename(DW,@date)
when DATEPART(dd,@date)>7 and DATEPART(dd,@date)<=14 then '2nd '+datename(DW,@date)
when DATEPART(dd,@date)>14 and DATEPART(dd,@date)<=21 then '3rd '+datename(DW,@date)
when DATEPART(dd,@date)>21 and DATEPART(dd,@date)<=28 then '4th '+datename(DW,@date)
when DATEPART(dd,@date)>28 and DATEPART(dd,@date)<=31 then '5th '+datename(DW,@date) end
謝謝......它爲我工作。 – 2013-05-07 13:22:34
那麼,如果XXX日期的數字在1到7之間,那麼它是該月的第一個XXX,如果它在8到14之間,則是該月的第二個XXX,如果是15到21之間,則是第3個XXX當月,如果是22和28之間,這是本月4日XXX,如果它是超過28它是本月5日XXX ...
試試這個,
DECLARE @date DATETIME;
DECLARE @week INT;
SET @date = getdate()
SELECT @week = datepart(wk, @date) - datepart(wk, convert(DATETIME, cast(month(getdate()) AS VARCHAR) + '/01/' + cast(year(getdate()) AS VARCHAR)) + 1)
SELECT CASE WHEN @week = 1 THEN '1st ' WHEN @week = 2 THEN '2nd ' WHEN @week = 3 THEN '3RD ' ELSE '4th ' END + DATENAME(weekday, @date) + ' of the month'
請檢查您的代碼日期'2013-08-30'..它應該返回本月的第5個星期五..而不是它返回本月的第4個星期五。 – 2013-05-07 12:49:38
你也可以檢查2013年5月31日。 – 2013-05-07 12:52:03
簡單,只需要再添加一個case語句。 – Maximus 2013-05-08 04:02:57
SELECT
-- Do you need this: (DATEPART(WEEKDAY, GETDATE()) + @@DATEFIRST % 7)
CASE 1 + (DATEPART(DAY, GETDATE()) - 1)/7
WHEN 1 THEN '1St'
WHEN 2 THEN '2nd'
WHEN 3 THEN '3rd'
WHEN 4 THEN '4th'
ELSE '5th'
END
+ ' '
+ DATENAME(dw, GETDATE())
+ ' of the month'
還有一個選項
DECLARE @date datetime = GETDATE()
SELECT CASE DATEPART(ww, @date) - (DATEPART(ww, DATEADD(DAY, 1 - DAY(@date), @date))
- CASE WHEN DATEPART(dw, DATEADD(dd, 1 - DAY(@date), @date)) <= DATEPART(dw, @date) THEN 1 ELSE 0 END)
WHEN 1 THEN '1st '
WHEN 2 THEN '2nd '
WHEN 3 THEN '3rd '
WHEN 4 THEN '4th '
WHEN 5 THEN '5th ' END + DATENAME(dw, @date) + ' of the month'
w.y.t.演示:你試過了什麼? – Freelancer 2013-05-07 12:22:21