2010年03月22日
SQL豆知識【53】
第53回目のSQLの豆知識としまして
図1の様な『売上データ』の
テーブルデータが存在していたとします。
売上データ
図1
図1の『売上データ』を基に
日付関数(DATEDIFF)についての
説明を行っていきたいと思います。
① 『DATEDIFF』
基準となる2つの日付の期間(差分)を求める関数です。
書式としましては以下の様になります。
≪SQL SERVER≫
【書式】
DATEDIFF(interval,startdate,enddate)
【引数】
interval:基準要素
startdate:開始日付
enddate:終了日付
【戻り値】
2つの日付の差
それでは『DATEDIFF』について実際に行ってみたいと思います。
売上データ・処理日を基準要素別に変換してみます。
● 『interval』で指定する事の出来る基準要素の種類
SELECT 伝票番号,行番号,処理日,getdate() 基準日,
DATEDIFF(year,処理日,getdate()) 年差分,
DATEDIFF(quarter,処理日,getdate()) 四半期差分,
DATEDIFF(month,処理日,getdate()) 月差分
FROM 売上データ
図2
図2の様に、
『売上データ・処理日』と『基準日』の2つの日付に対して
year:「年」の差分が求められる
quarter:四半期分の差分が求められる
(四半期:3カ月)
month:「月」の差分が求められる
指定した基準要素に対して差分が求められたのが分かります。
SELECT 伝票番号,行番号,処理日,getdate() 基準日,
DATEDIFF(dayofyear,処理日,getdate()) 日差分,
DATEDIFF(day,処理日,getdate()) 日差分,
DATEDIFF(week,処理日,getdate()) 週差分
FROM 売上データ
図3
図3の様に、
『売上データ・処理日』と『基準日』の2つの日付に対して
dayofyear:「日」の差分が求められる
day:「日」の差分が求められる
week:「週」の差分が求められる
指定した基準要素に対して差分が求められたのが分かります。
SELECT 伝票番号,行番号,処理日,getdate() 基準日,
DATEDIFF(hour,処理日,getdate()) 時差分,
DATEDIFF(minute,処理日,getdate()) 分差分,
DATEDIFF(second,処理日,getdate()) 秒差分
FROM 売上データ
図4
図4の様に、
『売上データ・処理日』と『基準日』の2つの日付に対して
hour:「時間」の差分が求められる
minute:「分」の差分が求められる
second:「秒」の差分が求められる
指定した基準要素に対して差分が求められたのが分かります。
SELECT 伝票番号,行番号,処理日,DATEADD(millisecond,10,処理日) 基準日,
DATEDIFF(millisecond,処理日,DATEADD(millisecond,10,処理日)) ミリ秒差分
FROM 売上データ
図5
図5の様に、
『売上データ・処理日』と『基準日』の2つの日付に対して
millisecond:「ミリ秒」の差分が求められる
(ミリ秒は求められた値がまるめられますので注意のこと)
指定した基準要素に対して差分が求められたのが分かります。
開始日付(startdate)より以前の日付を
終了日付(enddate)に指定すると
返される日付の値はマイナス値が返ってきます。
今回は、基本的な使用方法を説明しましたが、
色々な使い方がありますので是非、使用して試してみてください。
次回も引き続き、
『日付関数』の説明を行います。
ブログランキングに参加しています。
---------------------------------------------------------------------------------------------------------------
■ 弊社の事をお知りになりたい方
■ 弊社へ入社希望の方(転職希望の方)
■ その他、ご相談やご連絡を取りたい方は
画面上部の「オ-ナ-へメッセ-ジ」よりご連絡を下さい。
図1の様な『売上データ』の
テーブルデータが存在していたとします。
売上データ
図1
図1の『売上データ』を基に
日付関数(DATEDIFF)についての
説明を行っていきたいと思います。
① 『DATEDIFF』
基準となる2つの日付の期間(差分)を求める関数です。
書式としましては以下の様になります。
≪SQL SERVER≫
【書式】
DATEDIFF(interval,startdate,enddate)
【引数】
interval:基準要素
startdate:開始日付
enddate:終了日付
【戻り値】
2つの日付の差
それでは『DATEDIFF』について実際に行ってみたいと思います。
売上データ・処理日を基準要素別に変換してみます。
● 『interval』で指定する事の出来る基準要素の種類
基準要素 | interval | interval省略形 |
年 | year | yy,yyyy |
四半期 | quarter | qq,q |
月 | month | mm,m |
年間通算日 | dayofyear | dy,y |
日 | day | dd,d |
週 | week | wk,ww |
時 | hour | hh |
分 | minute | mi,n |
秒 | second | ss,s |
ミリ秒 | millisecond | ms |
SELECT 伝票番号,行番号,処理日,getdate() 基準日,
DATEDIFF(year,処理日,getdate()) 年差分,
DATEDIFF(quarter,処理日,getdate()) 四半期差分,
DATEDIFF(month,処理日,getdate()) 月差分
FROM 売上データ
図2
図2の様に、
『売上データ・処理日』と『基準日』の2つの日付に対して
year:「年」の差分が求められる
quarter:四半期分の差分が求められる
(四半期:3カ月)
month:「月」の差分が求められる
指定した基準要素に対して差分が求められたのが分かります。
SELECT 伝票番号,行番号,処理日,getdate() 基準日,
DATEDIFF(dayofyear,処理日,getdate()) 日差分,
DATEDIFF(day,処理日,getdate()) 日差分,
DATEDIFF(week,処理日,getdate()) 週差分
FROM 売上データ
図3
図3の様に、
『売上データ・処理日』と『基準日』の2つの日付に対して
dayofyear:「日」の差分が求められる
day:「日」の差分が求められる
week:「週」の差分が求められる
指定した基準要素に対して差分が求められたのが分かります。
SELECT 伝票番号,行番号,処理日,getdate() 基準日,
DATEDIFF(hour,処理日,getdate()) 時差分,
DATEDIFF(minute,処理日,getdate()) 分差分,
DATEDIFF(second,処理日,getdate()) 秒差分
FROM 売上データ
図4
図4の様に、
『売上データ・処理日』と『基準日』の2つの日付に対して
hour:「時間」の差分が求められる
minute:「分」の差分が求められる
second:「秒」の差分が求められる
指定した基準要素に対して差分が求められたのが分かります。
SELECT 伝票番号,行番号,処理日,DATEADD(millisecond,10,処理日) 基準日,
DATEDIFF(millisecond,処理日,DATEADD(millisecond,10,処理日)) ミリ秒差分
FROM 売上データ
図5
図5の様に、
『売上データ・処理日』と『基準日』の2つの日付に対して
millisecond:「ミリ秒」の差分が求められる
(ミリ秒は求められた値がまるめられますので注意のこと)
指定した基準要素に対して差分が求められたのが分かります。
開始日付(startdate)より以前の日付を
終了日付(enddate)に指定すると
返される日付の値はマイナス値が返ってきます。
今回は、基本的な使用方法を説明しましたが、
色々な使い方がありますので是非、使用して試してみてください。
次回も引き続き、
『日付関数』の説明を行います。
ブログランキングに参加しています。
---------------------------------------------------------------------------------------------------------------
■ 弊社の事をお知りになりたい方
■ 弊社へ入社希望の方(転職希望の方)
■ その他、ご相談やご連絡を取りたい方は
Posted by JOB CAFE at 16:37│Comments(0)
│SQL