DECLARE @date DATETIME= GETDATE()
SELECT DATEDIFF(WEEK,
DATEADD(WEEK,
DATEDIFF(WEEK, 0,
DATEADD(MONTH, DATEDIFF(MONTH, 0, @date), 0)),
0), @date - 1) + 1
datediff()
関数のパラメータとして0の目的は何ですか?今月のSQLで
DECLARE @date DATETIME= GETDATE()
SELECT DATEDIFF(WEEK,
DATEADD(WEEK,
DATEDIFF(WEEK, 0,
DATEADD(MONTH, DATEDIFF(MONTH, 0, @date), 0)),
0), @date - 1) + 1
datediff()
関数のパラメータとして0の目的は何ですか?今月のSQLで
あなたの質問に具体的な答えが0
月の初めを取得するだけの方法であるということである。
dateadd(month, datediff(month, 0, @date), 0)
それが提供していないので、これは、SQL Serverでこれを行うための一つの方法であります「日付切り捨て」機能。私が好む:
dateadd(day, 1 - day(@date), @date)
(@date
は時間成分を有する場合には確かに、これはほんの少し複雑ですが。)
ただし、これを行うにははるかに簡単な方法は次のとおりです。
select (day(@date) - 1)/7) as week_of_month
これは古いfashioneです月の初めに日付を取得する方法です。 –
まずGoogleで検索を依頼する前に – Vitorlui
叫んでいるタイトルのある別のSQLの質問?これは何ですか?! – Biffen