日付処理

  日付と日付の間



● TO_DATE
● MONTHS_BETWEEN
● ADD_MONTHS
LAST_DAY

日付から日付を引く事によって経過日数を求める事ができます

  
select TO_DATE('2004/01/01') - TO_DATE('2003/12/31') from dual;

select TO_DATE('2003/12/31') - TO_DATE('2004/01/01') from dual;
  

同様に、日付に対して加算・減算を行なうを行なう事ができます

  
select TO_DATE('2004/01/01') + 365 from dual;

select TO_DATE('2004/01/01') - 365 from dual;
  

日付と日付の間を処理する関数としては、MONTHS_BETWEEN があります。これは、経過月数を求めるものですが、端数が戻されます

  
select MONTHS_BETWEEN(TO_DATE('2004/01/01'),TO_DATE('2003/12/15')) 経過月数
 from dual
  

経過月数
1 0.548387096774194



結果として整数が戻されるのは、「日」が同じ場合ですが、月末の場合は例外となります。よって以下の二つの関数の結果は同じ結果となります

  
select
   MONTHS_BETWEEN(TO_DATE('2004/01/31'),TO_DATE('2003/11/30')) 経過月数1,
   MONTHS_BETWEEN(TO_DATE('2004/01/30'),TO_DATE('2003/11/30')) 経過月数2
 from dual
  

経過月数1 経過月数2
1 2 2



MONTHS_BETWEEN を使用すると、経過年数も知る事ができます

  
select
   TRUNC(MONTHS_BETWEEN(SYSDATE,TO_DATE('1950/5/4'))/12) 経過年数
 from dual
  

TRUNC は小数以下の切捨てです

経過年数
1 53



X ヶ月後の日付を求める関数があります。ADD_MONTHS です。

  
select
   ADD_MONTHS(SYSDATE,13) Xヶ月後,
   ADD_MONTHS(SYSDATE,-13) Xヶ月前
 from dual
  

Xヶ月後 Xヶ月前
1 2005/03/27 20:26:33 2003/01/27 20:26:33



時間を切り捨てるには、TRUNC を用います。その月の1日にする事も、月末にする事もできます

  
select
   TRUNC(ADD_MONTHS(SYSDATE,13)) Xヶ月後1,
   TRUNC(ADD_MONTHS(SYSDATE,13),'MONTH') Xヶ月後2,
   LAST_DAY(TRUNC(ADD_MONTHS(SYSDATE,13))) Xヶ月後3
 from dual
  

Xヶ月後1 Xヶ月後2 Xヶ月後3
1 2005/03/27 2005/03/01 2005/03/31



少し変わった関数に、「次の X 曜日は何日 ?」 という関数があります

  
select
   TRUNC(NEXT_DAY(SYSDATE,'火')) 次のX曜日
 from dual
  



  日付書式



  
select * 
 from "商品マスタ" 
 where "作成日" = TO_DATE('2005/03/15','RRRR/MM/DD HH24:MI:SS')
  

  
select TO_CHAR("作成日",'RRRR/MM/DD HH24:MI:SS') as 作成日
 from "商品マスタ" 
  

(注1)TO_*日時ファンクションで指定できるか
【TO_CHAR、TO_DATE、TO_TIMESTAMP、TO_TIMESTAMP_TZ、TO_YMINTERVALおよびTO_DSINTERVAL】
要素 (注1) 説明 
-
/
,
.
;
:
"text"
 

○ 

結果に取り込まれる句読点とテキスト。 

AD
A.D.
 

○ 

ピリオド付き/なしで西暦を示します。 

AM
A.M.
 

○ 

ピリオド付き/なしで午前を示します。 

BC
B.C.
 

○ 

ピリオド付き/なしで紀元前を示します。 

CC
SCC
 

× 

世紀。

  • 4桁で表した年の下2桁が01〜99(01および99を含む)の場合、世紀はその年の上2桁より1つ大きくなります。

  • 4桁で表した年の下2桁が00の場合、世紀はその年の上2桁と同一になります。

たとえば、2002は21を戻し、2000は20を戻します。 

D
 

○ 

曜日(1〜7)。 

DAY
 

○ 

曜日。空白を埋め込んで、この要素に使用される日付言語の一番長い曜日の幅で表示します。 

DD
 

○ 

月における日(1〜31)。 

DDD
 

○ 

年における日(1〜366)。 

DL
 

○ 

OracleデータベースのDATE書式の拡張である長い日付書式の値(NLS_DATE_FORMATパラメータの現在の値)を戻します。日付コンポーネント(曜日、月番号など)は、NLS_TERRITORYおよびNLS_LANGUAGEパラメータに応じて表示されます。たとえば、AMERICAN_AMERICAロケールでは、これは書式'fmDay, Month dd, yyyy'を指定することと同じです。GERMAN_GERMANYロケールでは、書式'fmDay, dd. Month yyyy'を指定することと同じです。

制限事項: この書式はTS要素とのみ指定できます。その場合は空白で区切ります。 

DS
 

○ 

短い日付書式の値を戻します。日付コンポーネント(曜日、月番号など)は、NLS_TERRITORYおよびNLS_LANGUAGEパラメータに応じて表示されます。たとえば、AMERICAN_AMERICAロケールでは、これは書式'MM/DD/RRRR'を指定することと同じです。ENGLISH_UNITED_KINGDOMロケールでは、書式'DD/MM/RRRR'を指定することと同じです。

制限事項: この書式はTS要素とのみ指定できます。その場合は空白で区切ります。 

DY
 

○ 

曜日の省略形。 

E
 

× 

時代名の略称(日本、台湾、タイ)。 

EE
 

× 

時代名の完全名称(日本、台湾、タイ)。 

FF [1..9]
 

○ 

小数部。基数は出力されません(基数文字の追加には、X書式要素を使用します)。戻される日時の値の小数部の桁数を指定するには、FFの後に、1〜9の数字を使用します。数字を指定しない場合は、日時データ型に指定された精度またはデータ型のデフォルトの精度が使用されます。

例: 'HH:MI:SS.FF'

SELECT TO_CHAR(SYSTIMESTAMP, 'SS.FF3') from dual; 

FM
 

○ 

前後に空白を付けずに値を戻します。

参照: この書式モデル修飾子の詳細は、Oracle Database SQLリファレンスを参照してください。 

FX
 

○ 

文字データと書式モデルが完全に一致する必要があります。

参照: この書式モデル修飾子の詳細は、Oracle Database SQLリファレンスを参照してください。 

HH
 

○ 

時間(1〜12)。 

HH12
 

× 

時間(1〜12)。 

HH24
 

○ 

時間(0〜23)。 

IW
 

× 

ISO規格に基づく、年における週(1〜52または1〜53)。 

IYY
IY
I
 

× 

それぞれISO年の下3桁、2桁、1桁。 

IYYY
 

× 

ISO規格に基づく4桁の年。 

J
 

○ 

ユリウス日。紀元前4712年1月1日から経過した日数。「J」を付けて指定する数値は、整数にしてください。 

MI
 

○ 

分(0〜59)。 

MM
 

○ 

月(01〜12、1月 = 01)。 

MON
 

○ 

月の名前の省略形。 

MONTH
 

○ 

月の名前。空白を埋め込んで、この要素に使用される日付言語の一番長い月名の幅で表示します。 

PM
P.M.
 

× 

ピリオド付き/なしで午前を示します。 

Q
 

× 

年の四半期(1、2、3、4;1月〜3月=1)。 

RM
 

○ 

ローマ数字で表した月(I〜XII;1月=I)。 

RR
 

○ 

2桁のみを使用して、21世紀に20世紀の日付を格納できます。

参照: RR日時書式要素の詳細は、Oracle Database SQLリファレンスを参照してください。 

RRRR
 

○ 

年を丸めます。4桁または2桁で入力できます。2桁の場合、RRの場合と同様の結果が戻ります。年を4桁で入力すると、この処理は行われません。 

SS
 

○ 

秒(0〜59)。 

SSSSS
 

○ 

午前0時から経過した秒(0〜86399)。 

TS
 

 

短い時刻書式の値を戻します。時刻コンポーネント(時、分など)は、NLS_TERRITORYおよびNLS_LANGUAGE初期化パラメータに応じて表示されます。

制限事項: この書式はDL要素またはDS要素とのみ指定できます。その場合は空白で区切ります。 

TZD 
 

○ 

夏時間の情報。TZDの値は、夏時間の情報を持つタイムゾーン文字列の省略形です。TZRで指定した地域と対応している必要があります。

例: PST(米国/太平洋標準時)、PDT(米国/太平洋夏時間) 

TZH
 

○ 

タイムゾーンの時間(TZM書式要素を参照)。

例: 'HH:MI:SS.FFTZH:TZM' 

TZM
 

○ 

タイムゾーンの分(TZH書式要素を参照)。

例: 'HH:MI:SS.FFTZH:TZM' 

TZR
 

○ 

タイムゾーン地域の情報。値は、データベースでサポートされるタイムゾーン地域である必要があります。

例: US/Pacific 

WW
 

× 

年における週(1〜53)。第1週はその年の1月1日で始まり、1月7日で終了します。 

W
 

× 

月における週(1〜5)。第1週はその月の1日で始まり、7日で終了します。 

X
 

○ 

ローカル基数文字。

例: 'HH:MI:SSXFF' 

Y,YYY
 

○ 

指定した位置にカンマを付けた年。 

YEAR
SYEAR
 

× 

フルスペルで表した年。Sを指定すると紀元前の日付の先頭に負の符号(-)が付けられます。 

YYYY
SYYYY
 

○ 

4桁で表した年。Sを指定すると紀元前の日付の先頭に負の符号(-)が付けられます。 

YYY
YY
Y
 

○ 

それぞれ年の下3桁、2桁、1桁。 











  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ