1.11.1 日時書式の概要と規則
- 〈この項の構成〉
(1) 概要
-
スカラ関数VARCHAR_FORMATで,日付データ,時刻データ,又は時刻印データを,既定以外の文字列表現に変換する場合
-
スカラ関数DATE,TIME,及びTIMESTAMP_FORMATで,日付,時刻,又は時刻印の既定以外の文字列表現を,日付データ,時刻データ,又は時刻印データに変換する場合
(2) 日時書式の規則
-
日時書式として指定できるものを次に示します。
-
文字列定数,及び混在文字列定数
-
列指定
-
コンポネント指定
-
SQL変数,又はSQLパラメタ
-
連結演算
-
集合関数(MAX,及びMIN)
-
スカラ関数
-
CASE式
-
CAST指定
-
関数呼出し
-
スカラ副問合せ
-
-
日時書式のデータ型は,文字データ型(CHAR,VARCHAR),又は混在文字データ型(MCHAR,MVARCHAR)にしてください。
-
日時書式の長さは,最大240バイトにしてください。ただし,変換対象の値式の文字集合がUTF16の場合は,最大480バイトにしてください。
(3) 日時書式の要素
-
日時書式で指定できる日時書式の要素とその意味を次の表に示します。
表1‒30 日時書式の要素とその意味 日時項目
日時書式の要素※1
意味
年
YYYY
4けたで表した年(0001〜9999)
YY
2けたで表した年(00〜99)※4
月
MM
月(01〜12)
MON
月の省略名※2※3
MONTH
月の名前※2※3
日
DD
日(01〜該当する月の最終日)
時
HH
時(00〜23)
分
MI
分(00〜59)
秒
SS
秒(00〜61)※8
小数秒
FF
小数秒※4※5
NN…N
pけたの小数秒(p=Nの数(1〜6))※6
その他
空白( )
区切り文字として使用できる要素
ハイフン(-)
斜線(/)
コンマ(,)
ピリオド(.)
セミコロン(;)
コロン(:)
"文字列"
文字列自身を表す引用符で囲まれた文字列※7
- 注※1
-
日時書式の要素は,引用符(")で囲まれた文字列以外は半角文字で指定してください。また,MONとMONTHの1,2文字目,及び引用符で囲まれた文字列中の文字以外の文字は,大文字,小文字の区別はされません。
- 注※2
-
MON,MONTHでは,月の省略名,及び月の名前の大文字,小文字の指定ができます。大文字と小文字は,指定した日時書式の要素の1,2文字目に従います。
(例) MONTH→JUNE Month→June month→june
日時書式の要素MON,MONTHの1,2文字目と,月の名前,省略名の形式の関係を次の表に示します。
表1‒31 日時書式の要素MON,MONTHの1,2文字目と,月の名前,省略名の形式の関係 2文字目
1文字目
大文字
小文字
大文字
すべて大文字
すべて小文字
小文字
1文字目だけ大文字
すべて小文字
- 注※3
-
日時書式の要素をMON,MONTHで指定した場合の,各月の省略名及び名前を次の表に示します。
表1‒32 各月の省略名及び名前(日時書式の要素をMON,MONTHで指定した場合) 月
省略名
名前
1
JAN
JANUARY
2
FEB
FEBRUARY
3
MAR
MARCH
4
APR
APRIL
5
MAY
MAY
6
JUN
JUNE
7
JUL
JULY
8
AUG
AUGUST
9
SEP
SEPTEMBER
10
OCT
OCTOBER
11
NOV
NOVEMBER
12
DEC
DECEMBER
- 注※4
-
YY,FFは,スカラ関数VARCHAR_FORMATでだけ有効で,ほかのスカラ関数で指定した場合はエラーとなります。
- 注※5
-
FFでは,結果の文字列表現の小数秒部分のけた数は,スカラ関数VARCHAR_FORMATの引数で指定した時刻印データの型に従います。小数秒精度が0の場合は,長さ0の文字列になります。
- 注※6
-
NN…Nは,次の形式で変換されます。
-
日時を文字列表現に変換する場合
時刻印データの小数秒精度よりpが小さければ切り捨て,大きければ拡張した小数秒部分を0で補います。
-
文字列表現を日時に変換する場合
日時の文字列表現の小数秒部分のけた数は,pと一致している必要があります。
-
- 注※7
-
引用符で囲まれた文字列中に更に引用符を指定する場合,連続する二つの引用符("")で表します。
- 注※8
-
システム共通定義のpd_leap_secondがNの場合,秒の範囲は次のようになります。システム共通定義pd_leap_secondオペランドについては,マニュアル「HiRDB システム定義」を参照してください。
日時項目
日時書式の要素
意味
秒
SS
秒(00〜59)
(4) 日時書式の要素についての規則
-
日時書式の文字列中には,区切り文字,引用符で囲まれた文字列以外は同じ日時項目の日時書式の要素を2回以上指定できません。
-
日時を文字列表現に変換する場合に,変換対象の日時のデータと関係のない日時書式の要素が日時書式にあるとき,その部分は次に示す表にある文字列が補われます。
(例) VARCHAR_FORMAT(DATE('2002-01-01'),'YYYY-MM-DD HH:MI') →'2002-01-01 00:00'
-
日時書式の要素に補う文字列を次の表に示します。
表1‒33 日時書式の要素に補う文字列 日時書式の要素
補う文字列
YYYY
現在の年(例:'2002')
YY
現在の年の下2けた(例:'02')
MM
現在の月(例:'08')
MON
現在の月の省略名(例:'AUG')
MONTH
現在の月の名前(例:'AUGUST')
DD
現在の日(例:'05')
HH
'00'
MI
'00'
SS
'00'
FF
'00'
NN…N
'00…0'(pけたの0,p=Nの数)
-
文字列表現を日時に変換するスカラ関数で必要となる日時項目を次の表に示します。必要な日時項目がない場合はエラーとなります。
表1‒34 文字列表現を日時に変換するスカラ関数で必要となる日時項目 スカラ関数
必要な日時項目
DATE
年,月,日
TIME
時,分,秒
TIMESTAMP_FORMAT
年,月,日,時,分,秒
-
文字列表現を日時に変換する場合,変換後のデータに関係ない日時書式の要素は,結果には反映されません。
-
文字列表現を日時に変換する場合,文字列中の書式要素間に,指定した日時書式にはない余分な空白が含まれているときは,その空白は無視されます。
-
日時書式を指定できるスカラ関数と日時書式の要素の関係を次の表に示します。
表1‒35 日時書式を指定できるスカラ関数と日時書式の要素の関係 日時書式の要素
VARCHAR_FORMAT
DATE
TIME
TIMESTAMP_FORMAT
DATE型※1
TIME型※1
TIMESTAMP型※1
YYYY
○※2
○※2
(現在の年)
○※2
◎
○※5
◎
YY
○※2
○※2
(現在の年の下2けた)
○※2
×
×
×
MM
○※3
○※3
(現在の月)
○※3
◎※3
○※3※5
◎※3
MON
○※3
○※3
(現在の月の省略名)
○※3
◎※3
○※3※5
◎※3
MONTH
○※3
○※3
(現在の月の名前)
○※3
◎※3
○※3※5
◎※3
DD
○
○
(現在の日)
○
◎
○※5
◎
HH
○
('00')
○
○
○※5
◎
◎
MI
○
('00')
○
○
○※5
◎
◎
SS
○
('00')
○
○
○※5
◎
◎
FF
○※4
('00')
○※4
('00')
○※4
×
×
×
NN…N
○※4
('00…0')
○※4
('00…0')
○※4
○※5
○※5
○
- (凡例)
-
◎:必ず指定する必要があり,1回だけ指定できます。指定しないとエラーとなります。
○:1回だけ指定できます。
×:指定できません。指定するとエラーとなります。
( ):括弧内は,変換される文字列を表します。
- 注※1
-
スカラ関数VARCHAR_FORMATで指定した型のデータを,文字列表現に変換する場合について表します。
- 注※2
-
YYYY,及びYYは,どちらか一つを1回だけ指定できます。
- 注※3
-
MM,MON,及びMONTHは,どれか一つを1回だけ指定できます。
- 注※4
-
FF,及びNN…Nは,どちらか一つを1回だけ指定できます。
- 注※5
-
結果のデータ型と関係ないため,結果には反映されません。