DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
誰かが私にこれを説明できますか。
これにより、特定の日付の月の最初が得られます
内部選択
select DATEDIFF(MONTH, 0, GETDATE())
により、1900-01-01 からの月数が得られます
ここは1350
これは 1900-01-01 に追加されますが、月のみ
select DATEADD(MONTH,1350,0)
2012-07-01 00:00:00.000 を返します
今月の始まりです。
これは、特定の日付の月の始まりを見つける最も効率的な方法だと思います。
The DATEDIFF will give you date diff in month from January 1 1900 to current date
AND
The DATEADD will add (DATEDIFF) results months to your last parameter of DATEADD
今月の始まりです。1900 年 1 月からの月数をカウントし、1900 年 1 月 1 日を加算して現在の月の始まりを取得します。
DATEADD 関数は、指定した日付に間隔を追加します。たとえば、SalesOrderHeader テーブル内のすべての注文の期日が 3 日ずれている場合、次のステートメントで新しい日付を取得できます。
USE AdventureWorks;
GO
SELECT DATEADD(day, 3, DueDate)
FROM Sales.SalesOrderHeader;
GO
DATEDIFF 関数は、指定した 2 つの日付の 2 番目と 1 番目の間の期間を dateparts で計算します。つまり、2 つの日付の間の間隔を見つけます。結果は、日付部分の date2 - date1 に等しい符号付き整数値です。次のクエリは、2001 年 11 月 30 日の日付を使用し、DueDate からその日付までの経過日数を検索します。
USE AdventureWorks;
GO
SELECT DATEDIFF(day, DueDate, 'Nov 30 2001')
FROM Sales.SalesOrderHeader;
GO
SELECT DATEDIFF(year, '20051220', '20060101')
SELECT DATEDIFF(month, '20051220', '20060101')
SELECT DATEDIFF(day, '20051220', '20060101')