2016-03-31 14 views
0

私はMSSQLにはまだまだ慣れていて、誰かが次の文を前の週から前の月に見ていない場所に変換するのを助けることができるかどうか疑問に思っていました。MS SQLの日付形式ですか?

ks.report_date BETWEEN (convert(varchar(113), (DATEADD(day, (-1 * DATEPART(dw, (dateadd(week, -1, getdate())))) + 1, (dateadd(week, -1, getdate())))), 101)) 
         AND (convert(varchar(113), (DATEADD(day, (-1 * DATEPART(dw, (dateadd(week, -1, getdate())))) + 7, (dateadd(week, -1, getdate())))), 101)) 

答えて

0

SQL ServerにはEOMonth()という名前の関数があります。この関数は日付を取得し、その日付を含む月末を返します。 DATEADDを使用してその値から月を減算して、前月の最終日を取得することができます。最後に、DATEADDを再度使用して1日を追加して、その月の最初の日を取得します。ここに例があります。

BETWEEN DATEADD(DAY, 1, DATEADD(MONTH, -2, EOMONTH(GETDATE()))) 
AND DATEADD(MONTH, -1, EOMONTH(GETDATE())) 
0

は、SQL Server 2012より前のバージョンを使用している場合、これは動作します:

BETWEEN DATEADD(MONTH, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)) 
AND DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0))