24
DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)

誰かが私にこれを説明できますか。

4

5 に答える 5

44

これにより、特定の日付の月の最初が得られます

内部選択 select DATEDIFF(MONTH, 0, GETDATE())により、1900-01-01 からの月数が得られます

ここは1350

これは 1900-01-01 に追加されますが、月のみ

select DATEADD(MONTH,1350,0)2012-07-01 00:00:00.000 を返します

今月の始まりです。

これは、特定の日付の月の始まりを見つける最も効率的な方法だと思います。

于 2012-07-26T08:23:23.243 に答える
3
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
于 2012-07-26T08:31:55.273 に答える
2

今月の始まりです。1900 年 1 月からの月数をカウントし、1900 年 1 月 1 日を加算して現在の月の始まりを取得します。

于 2012-07-26T08:20:09.460 に答える
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')
于 2014-12-16T03:13:17.340 に答える