(DATEADDおよびDATEDIFF関数を使用して)SQL Serverの日付計算

 多くの場合、あなたは現在の日付を取得し、他のいくつかの日付を計算する必要があり、例えば、あなたのプログラムは、月の初日または最終日を決定する必要がある場合があります。あなたのほとんどは、おそらく日付(年、月、日など)を分割する方法を知って、その後、ちょうど彼らが必要とする日付を計算するために年、月、日、および他のいくつかの機能のうち分割に配置されました!この記事では、私はあなたが使用する可能性がありますあなたのプログラム内の異なる日付の数を計算するためにDATEADDおよびDATEDIFF関数を使用する方法を紹介します。 
この記事の例を使用する前に、以下の質問に注意を払う必要があります。ほとんどの場合、異なるマシン上で実行例のないすべての結果は同じではないかもしれないが、これは全くの日です、この設定の決定週の最初の日です。初日(DATEFIRST)は、週の最初の日として日を使用するようにシステムを設定することを決めました。以下の例の全ては、初日が7に設定されている設定するには、週の最初の日として、日曜日に基づいています。あなたの設定は初日と同じでない場合は、これらの例を調整する必要があり、その最初の日と異なるセットマッチします。あなたは@@ DATEFIRST機能による初日セットに確認することができます。

これらの例を理解するために、我々は最初のDATEDIFFとDATEADD機能を確認します。DATEDIFF関数は2つの日付の間の時間を計算し、日、週、月、年、および時間間隔の総数そう。DATEADD関数は、時間間隔減算して日付を取得するために新しい日付を計算します。よりDATEADD DATEDIFF機能との時間間隔を習得するには、Microsoftのオンラインヘルプを読むことができます。

使用DATEDIFFとDATEADD機能日付を計算し、あなたは少し異なっている必要があるの日付に現在の日付から変換されている方法を検討します。あなたはこの側面からの時間間隔を考慮する必要があります。たとえば、そこにあなたはどのくらいの時間間隔を取得したい日付、またはどのくらいの時間間隔になりましたと(例えば、1900年1月1日のために)ある日の間に現在の日付の間にある、というように。あなたは簡単に私の異なる日付計算例を理解するのに役立ちます時間間隔に集中する方法を理解します。

月の最初の日

最初の例では、私がどのように現在の日付から月の最後の日に行くことを教えてくれます。注:この記事では、この例と他の例は、単に我々が望んでいた日付を計算するためにDATEDIFFとDATEADD関数を使用します。各実施例が、計算を加算または減算算出された時間間隔に先立って、[日付を得ることが望ましいです。

:これは計算SQLスクリプトに月の最初の日である
     SELECT DATEADD(ミリメートル、DATEDIFF(ミリメートル、0、GETDATE())、0)

我々は、それがどのように動作するかを確認するために離れてこの文を置きます。コア機能)(GETDATEで、ほとんどの人は、これが戻って現在の日付と時間という機能であることを知っています。この日付の間の月数関数DATEDIFF(MM、0、GETDATE())の次の実行は、現在の日付と「:00:00.000 1900-01-0100」を計算することです。注意:時間と時間変数からのミリ秒「1900-01-0100:00:00.000」にカウント。あなたは表現が「0」DATEDIFF関数である第一の時間を指定することができる理由です。次の関数は、数ヵ月後に現在の日付「1900-01-01」を高めるために、DATEADDです。日付「1900-01-01」と現在の日付を事前に定義ヶ月の数を増やすことで、私たちは月の最初の日を取得することができます。また、日付の計算された時間の部分は、「00:00:00.000」になります。

この計算手法は、時間の間隔の「1900-01-01」の数に現在の日付を計算した後、「1900-01-01」に追加し、特別な日を立ち上げ、これまでに使用することができ、多数の異なる技術を算出しています。次の例では、現在の日付とは異なる日付を生成するためにこの技術を使用しています。

 

月曜日今週

ここでは、一日の時間は、月曜日が今週ある(週)を用いて算出し、私の週間間隔です。

SELECT DATEADD(週、DATEDIFF(週、0、GETDATE())、0)

年の最初の日

今年(YY)の期間中に年の最初の日を表示します。

SELECT DATEADD(YY、DATEDIFF(YY、0、GETDATE())、0)

四半期の最初の日

あなたが四半期の最初の日を計算したい場合は、この例では何をすべきかを説明します。

SELECT DATEADD(QQ、DATEDIFF(QQ、0、GETDATE())、0)

日夜

GETDATE()関数が返すことにより、パートタイムカットオフまでの時間値を必要としたら、それは現在の日付が夜中にない考慮されます。もしそうなら、この例では、DATEDIFF DATEADD関数を使用し、深夜に時刻を取得します。

SELECT DATEADD(DD、DATEDIFF(DD、0、GETDATE())、0)

DATEDIFF関数は、深さとDATEADDを算出し、

あなたは、簡単な計算やDATEADD DATEDIFF関数を使用して、あなたは異なる可能な意味のある日の多くを見つけることができ、見ることができます。

すべての例は、これまでのところ唯一の時間間隔の数は、現在の時刻との間で計算され、「1900-01-01」、その後、日付までの時間間隔を計算するために、「1900-01-01」に追加されています。あなたは時間間隔の数を変更すると仮定し、またはDATEADD関数を呼び出すために異なる時間間隔を使用するか、むしろ増加より減算時間間隔、その後、あなたはこれらの微調整を通じて、多くの異なる日付を見ることができます。

ここでDATEADD機能を交換した前と後2 DATEADD最後の日間隔を計算するための4つの追加機能の使用例です。

先月、最後の日

これは先月の最終日の計算例です。それは、この例では、月の最終日から3ミリ秒を引いたものです。SQL Serverの時間に、心に留めておくべきことの一つは、3ミリ秒の精度です。私は私がしたい日付と時刻を取得するために、3ミリ秒を減算する必要がある理由です。

(MS、-3、DATEADD(MM、DATEDIFF(MM、0、GETDATE())、0))DATEADD SELECT

の:(「99759 :: 59 23」)の日付の時刻部分から算出したが、最後の時間を含むSQL Serverは、一日の時間を記録することができます。

昨年の最後の日

上記のリンクの例としては、昨年の最終日を得るために、あなたは年の最初の日に3ミリ秒を減算する必要があります。

(MS、-3、DATEADD(YY、DATEDIFF(YY、0、GETDATE())、0))DATEADD SELECT

月の最後の日

さて、今月の最終日を取得するために、私は先月の文の最後の日を取得するには少し工夫が必要です。変更点は、使用DATEDIFFの復帰間隔時間プラス1として、現在の日付と「1900-01-01」を比較する必要があります。月追加することで、私は月の最後の日を計算するため、3ミリ秒を引き、その後、次の月の最初の日を計算します。これは、今月のSQLスクリプトの最後の日に計算されます。

DATEADD SELECT(MS、-3、DATEADD(MM、DATEDIFF(M、0、GETDATE())+ 1、0))

 

年の最後の日

これで今年のスクリプトの最後の日を計算することで、このアプローチを、把握すべきです

SELECT DATEADD(MS、-3、DATEADD(YY、DATEDIFF(YY、0、GETDATE())+ 1、0))。

シーズンの最後の日

(MS、-3、DATEADD日@(QQ、DATEDIFF(QQ、0)+1、0))DATEADD SELECT

月の最初の月曜日

まあ、今では最後の例です。ここで私は、月の最初の月曜日を計算します。これは、スクリプト計算です。 
     DATEADD SELECT(週、DATEDIFF(週、0、                            
                DATEADD(DD ,. 6日付要素(日、GETDATE())、GETDATE())   
                                                 )、0)           

この例では、私が「月曜日の週」スクリプトを使用し、少しの修正を行いました。変更された部分は、元のスクリプト「GETDATE()」セクションでは、計算が月の最初の月曜日に得られるように、現在の日付を置き換えるために6で計算された月の最初の日に、計算に月の6日を交換しています。

概要

私はあなたがDATEADDおよびDATEDIFF関数で日付を計算するときに、これらの例はあなたに少しのインスピレーションを与えることができることを望みます。時間間隔の日付を計算するために、この数学的方法を用いることで、私は2つの日付の間の間隔が貴重であることを示すために便利なカレンダーを見つけました。これは、これらの日付を計算する方法であることに注意してください。覚えておいて、同じ結果を得るために多くの方法があります。そうでない場合は、他の方法を持っている場合、それは非常に良いですが、私はこれらの例はあなたにいくつかのインスピレーション、あなたがDATEADDおよびDATEDIFF関数を使用するときは、日付に使用する可能性のあるプログラムが計算を与えることができることを望みます。

おすすめ

転載: www.cnblogs.com/hq2008/p/12095881.html