2012-07-26 21 views

答えて

0

今月の開始です。これは、1900年1月からの月数をカウントし、現在の月の開始

+0

私はいつも1を1に設定すると同じ結果が得られるが、ずっと簡単だと思った? –

26

これはあなたに与えられた日付

内側の選択のための月の最初を与えるを取得するために、1900年1月1日にそれらの上に追加されます select DATEDIFF(MONTH, 0, GETDATE())は1900-01-01

からの月数を与えるここでは、これは1900年1月1日に追加されます1350

であるが、唯一ヶ月

select DATEADD(MONTH,1350,0)は、今月の開始日である2012-07-01 00:00:00.000

を指定します。

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

0
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 
0

DATEADD関数は、指定した日付に間隔を追加します。 SalesOrderHeaderテーブル 内のすべての注文の期日が3日に滑った場合 たとえば、次の 文で新しい日付を得ることができた:

USE AdventureWorks; 
GO 
SELECT DATEADD(day, 3, DueDate) 
FROM Sales.SalesOrderHeader; 
GO 

DATEDIFF関数は、期間を算出し、指定した2番目の日付と2番目の日付の間の日付部分の つまり、 は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') 
3

DateDiff関数が何秒、月、年を返します - どんな間隔最初の日付(ここでは0)と2番目の日付(ここでは現在の日付)の間で指定します。私の働きで

 DATEDIFF(MONTH, 0, '2-14-2014') --returns month. 0 is for 1/1/1900, and getdate is the current date 
    --(i used a set date bc dates will change as this post gets older). 
    result: 1381 

、私は2014年2月14日の日付を使用し、それが1900年1月1日以来、私は数ヶ月の1381番号を与えました。私は基本的に、それは最も内側の式の日に指定されているもの月の最初の日を取得しますので...

 select Dateadd(MONTH, 1381, 0) 
    result: 2015-02-01 00:00:00.000 

ようDATEADD関数に1381を入れました。

私が把握しなければならなかったコードは、さらに進んでその結果から1秒を引いて、月の最終日を11時59分59秒に取得しました。

 select DATEADD(s, -1, '2015-02-01 00:00:00.000') 

すべて一緒に入れ式は次のようになります。

 DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,getdate())+1,0)) 

・ホープこれは誰かに役立ちます。 :)

関連する問題