2017-04-18 2 views

Antwort

0

Try this Ich denke, es ist alles was du brauchst:

set datefirst 6 

declare @dt datetime 
set @dt = '2017-03-04' 

select datepart(wk, @dt) - datepart(wk,dateadd(m, DATEDIFF(M, 0, @dt), 0)) + 1 as weekOfMonth 
0

Sie können DATEFIRST mit DATEADD verwenden. Die Einstellung DATEFIRST auf den Wert 6 steht für Samstag.

Versuchen Sie, diese (ersetzen yourDate mit datetime Spalte):

SET DATEFIRST 6 
select datediff(week, dateadd(month, 0, yourDate), yourDate) + 1 
+1

Dank @Douek für Ihre Antwort, aber diese Syntax zeigt mir diese Fehlermeldung msg: "Der Datentyp datetime Argument ist ungültig für das zweite Argument der Dateadd Funktion." –

+0

@Koby Douek, tauschen Sie IhreDate und 0 in dateadd() –

+0

@MustaphaAitFadel Bitte aktualisierte Antwort –

0

Sie diese Abfrage verwenden könnte

DECLARE @currentdate date = '2017-04-01' 
select floor((datepart(day,@currentdate) - 1)/7) + 1 AS WeekOfMonth 

--- @currentdate date = '2017-04-01' -- return 1 
--- @currentdate date = '2017-04-07' -- return 1 
--- @currentdate date = '2017-04-08' -- return 2 
0

Bitte nutzen Sie unten Abfrage machen:

SELECT 'Week '+ CAST(FLOOR((datepart(day,@YourDate) - 1)/7) + 1 AS VARCHAR(10)) Currentweek 
Verwandte Themen