日時関数¶
日時関数は、型 intervaldaysecond
、 intervalyearmonth
、 localdate
、 time
、 timestamp
、 timestamptz
、および date
(非推奨) の値を操作します。
実行エンジンは、現在の日時を返す関数を、クエリごとに 1 回評価します。この関数に該当するのは、 CURRENT_DATE
、 LOCALTIMESTAMP
、 CURRENT_TIMESTAMP
、 LOCALTIME
です。クエリにいずれかの関数が 2 回使用され、一方はデータベースに委任され、もう一方は Denodo で評価された場合、関数の結果が正確に一致しないことがあります。
次の関数が日時関数です。
ADDDAY¶
説明
ADDDAY
関数は、パラメータとして渡された日時の日フィールドを指定した量だけ増やして (increment が負の場合は減らして) 返します。
構文
ADDDAY( <value:intervaldaysecond>, <increment> ):intervaldaysecond
ADDDAY( <value:localdate>, <increment> ):localdate
ADDDAY( <value:timestamp>, <increment> ):timestamp
ADDDAY( <value:timestamptz>, <increment> ):timestamptz
; Deprecated signature because it uses the date (deprecated) type
ADDDAY( <value:date>, <increment> ):date
value
: 必須。日時式。increment
: 必須。日フィールドを増やす量。数値が負の場合、日フィールドは減らされます。式の型は int または long になります。
例
SELECT time, ADDDAY(time, 8)
FROM v
time |
addday |
---|---|
2020-06-29 19:19:41 |
2020-07-07 19:19:41 |
2020-12-31 22:59:56 |
2021-01-08 22:59:56 |
ADDHOUR¶
説明
ADDHOUR
関数は、パラメータとして渡された日時の時フィールドを指定した量だけ増やして (increment が負の場合は減らして) 返します。
構文
ADDHOUR( <value:intervaldaysecond>, <increment> ):intervaldaysecond
ADDHOUR( <value:time>, <increment> ):time
ADDHOUR( <value:timestamp>, <increment> ):timestamp
ADDHOUR( <value:timestamptz>, <increment> ):timestamptz
; Deprecated signature because it uses the date (deprecated) type
ADDDAY( <value:date>, <increment> ):date
value
: 必須。日時式。increment
: 必須。時フィールドを増やす量。数値が負の場合、時フィールドは減らされます。式の型は int または long になります。
例
SELECT time, ADDHOUR(time, -2)
FROM v
time |
addhour |
---|---|
2019-06-29 19:19:41 |
2019-06-29 17:19:41 |
2020-06-30 01:00:00 |
2020-06-29 23:00:00 |
ADDMILLIS¶
説明
ADDMILLIS
関数は、日時の値にミリ秒を追加します。増分は 0 より大きいか、0 未満になります。
構文
ADDMILLIS( <value:intervaldaysecond> [, <increment>] ):intervaldaysecond
ADDMILLIS( <value:time> [, <increment>] ):time
ADDMILLIS( <value:timestamp> [, <increment>] ):timestamp
ADDMILLIS( <value:timestamptz> [, <increment>] ):timestamptz
; Deprecated signature because it uses the date (deprecated) type
ADDMILLIS( <value:date> [, <increment>] ):date
value
: 必須。日時式。increment
: オプション。増分の値が指定されない場合は、1 ミリ秒となります。
例
例 1
SELECT timestamp, ADDMILLIS(timestamp)
FROM v;
timestamp |
addmillis |
---|---|
2019-01-29 01:01:02.345 |
2019-01-29 01:01:02.346 |
2000-01-01 00:00:01 |
2000-01-01 00:00:01.001 |
例 2
SELECT timestamp, ADDMILLIS(timestamp, 3)
FROM v;
timestamp |
addmillis |
---|---|
2019-01-29 01:01:02.345 |
2019-01-29 01:01:02.348 |
2000-01-01 00:00:01 |
2000-01-01 00:00:01.003 |
ADDMINUTE¶
説明
ADDMINUTE
関数は、パラメータとして渡された日時の分フィールドを指定した量だけ増やして (increment が負の場合は減らして) 返します。
構文
ADDMINUTE( <value:intervaldaysecond>, <increment> ):intervaldaysecond
ADDMINUTE( <value:time>, <increment> ):time
ADDMINUTE( <value:timestamp>, <increment> ):timestamp
ADDMINUTE( <value:timestamptz>, <increment> ):timestamptz
; Deprecated signature because it uses the date (deprecated) type
ADDMINUTE( <value:date>, <increment> ):date
value
: 必須。日時式。increment
: 必須。分フィールドを増やす量。数値が負の場合、分フィールドは減らされます。式の型は int または long になります。
例
SELECT time, ADDMINUTE(time, 10)
FROM v
Time |
addminute |
---|---|
2025-01-22 19:19:41 |
2025-01-22 19:29:41 |
2019-06-30 23:59:00 |
2019-07-01 00:09:00 |
ADDMONTH¶
説明
ADDMONTH
関数は、パラメータとして渡された日時の月フィールドを指定した量だけ増やして (increment が負の場合は減らして) 返します。
構文
ADDMONTH( <value:intervalyearmonth>, <increment> ):intervalyearmonth
ADDMONTH( <value:localdate>, <increment> ):localdate
ADDMONTH( <value:timestamp>, <increment> ):timestamp
ADDMONTH( <value:timestamptz>, <increment> ):timestamptz
; Deprecated signature because it uses the date (deprecated) type
ADDMONTH( <value:date, increment:int> ):date
value
: 必須。日時式。increment
: 必須。月フィールドを増やす量。数値が負の場合、月フィールドは減らされます。式の型は int または long になります。
例
SELECT time, ADDMONTH(time, -12)
FROM v
time |
addmonth |
---|---|
2020-06-29 19:19:41 |
2019-06-29 19:19:41 |
2021-01-08 22:59:56 |
2020-01-08 22:59:56 |
ADDSECOND¶
説明
ADDSECOND
関数は、パラメータとして渡された日時の秒フィールドを指定した量だけ増やして (increment が負の場合は減らして) 返します。
構文
ADDSECOND( <value:intervaldaysecond>, <increment> ):intervaldaysecond
ADDSECOND( <value:time>, <increment> ):time
ADDSECOND( <value:timestamp>, <increment> ):timestamp
ADDSECOND( <value:timestamptz>, <increment> ):timestamptz
; Deprecated signature because it uses the date (deprecated) type
ADDSECOND( <value:date>, <increment> ):date
value
: 必須。日時式。increment
: 必須。秒フィールドを増やす量。数値が負の場合、秒フィールドは減らされます。式の型は int または long になります。
例
SELECT time, ADDSECOND(time, 5)
FROM v
time |
addsecond |
---|---|
2019-01-29 19:19:41 |
2019-01-29 19:19:46 |
2020-06-30 22:59:56 |
2020-06-30 23:00:01 |
ADDWEEK¶
説明
ADDWEEK
関数は、パラメータとして渡された日時の週フィールドを指定した量だけ増やして (increment が負の場合は減らして) 返します。つまり、7 日の倍数で増減されます。
構文
ADDWEEK( <value:intervaldaysecond>, <increment> ):intervaldaysecond
ADDWEEK( <value:localdate>, <increment> ):localdate
ADDWEEK( <value:timestamp>, <increment> ):timestamp
ADDWEEK( <value:timestamptz>, <increment> ):timestamptz
; Deprecated signature because it uses the date (deprecated) type
ADDWEEK( <value:date>, <increment> ):date
value
: 必須。日時フィールド。increment
: 必須。日フィールドを 7 日分増やす回数。数値が負の場合、日フィールドは減らされます。0
の場合は未変更のvalue
を返します。式の型は int または long になります。
例
SELECT time, ADDWEEK(time, -2)
FROM v
time |
addweek |
---|---|
2019-06-29 19:19:41 |
2019-06-15 19:19:41 |
2021-01-08 22:59:56 |
2020-12-25 22:59:56 |
日付が 2 週間分減らされています。パラメータ increment
が負の数であるため、増やすのではなく減らされました。
ADDYEAR¶
説明
ADDYEAR
関数は、パラメータとして渡された日時の年フィールドを指定した量だけ増やして (increment が負の場合は減らして) 返します。
構文
ADDWEEK( <value:intervalyearmonth>, <increment> ):intervalyearmonth
ADDWEEK( <value:localdate>, <increment> ):localdate
ADDWEEK( <value:timestamp>, <increment> ):timestamp
ADDWEEK( <value:timestamptz>, <increment> ):timestamptz
; Deprecated signature because it uses the date (deprecated) type
ADDWEEK( <value:date>, <increment> ):date
value
: 必須。日時フィールド。increment
: 必須。年フィールドを増やす量。数値が負の場合、年フィールドは減らされます。式の型は int または long になります。
例
SELECT time, ADDYEAR(time, 7)
FROM v
time |
addyear |
---|---|
2020-01-29 19:19:41 |
2027-01-29 19:19:41 |
2021-07-28 22:59:56 |
2028-07-28 22:59:56 |
AT TIME ZONE¶
説明
AT TIME ZONE
関数は、パラメータとして渡されたタイムスタンプを返します。このとき、そのタイムゾーンは、指定されたタイムゾーンに変更されます。これは CONVERT_TIMEZONE
関数に相当します。
構文
<timestamp:timestamp> AT TIME ZONE <targetTimezone:text> : timestamptz
<timestamptz:timestamptz> AT TIME ZONE <targetTimezone:text> : timestamp
targetTimezone
: 必須。入力したタイムスタンプの変換先のタイムゾーン。timestamp
: 必須。変換するタイムスタンプ。
注
<timestamp> AT TIME ZONE <targetTimezone>
はCONVERT_TIMEZONE( targetTimezone:text, timestamp:timestamp ) : timestamptz
に相当します。これはタイムゾーンが指定されていないタイムスタンプ値であり、UTCからのタイムゾーンオフセットから指定されたタイムゾーンに変換したTIMESTAMPTZ 値を返します。<timestamptz> AT TIME ZONE <targetTimezone>
はCONVERT_TIMEZONE( targetTimezone:text, timestamptz:timestamptz ) : timestamp
に相当します。これは TIMESTAMPTZ 型の値を取り、指定されたタイムゾーンに値を移行し、TIMESTAMP 型の値 (タイムゾーンなし) で日時を返します。
例
SELECT now() AT TIME ZONE 'UTC';
now() |
convert_timezone |
---|---|
2022-12-29 19:00:00 |
2027-01-29 18:00:00 |
この結果では、ローカルタイムゾーンよりも 1 時間早い UTC タイムゾーンをターゲットタイムゾーンとして使用しています。使用されるローカルタイムゾーンは CET (中央ヨーロッパ標準時) です。
CONVERT_TIMEZONE¶
説明
CONVERT_TIMEZONE
関数は、あるタイムゾーンから別のタイムゾーンにタイムスタンプを変換します。
構文
CONVERT_TIMEZONE( sourceTimeZone:text, targetTimeZone:text, timestamp:timestamp ) : timestamp
CONVERT_TIMEZONE( targetTimezone:text, timestamp:timestamp ) : timestamptz
CONVERT_TIMEZONE( targetTimezone:text, timestamptz:timestamptz ) : timestamp
sourceTimeZone
: 最初の構文に必要です。入力したタイムスタンプのタイムゾーン。targetTimeZone
: 必須。入力したタイムスタンプの変換先のタイムゾーン。timestamp
: 必須。変換するタイムスタンプ。
例
SELECT CONVERT_TIMEZONE('CET', 'America/Los_Angeles', cast('timestamp','2022-01-19 08:00:00'))
convert_timezone |
---|
2022-01-18 23:00:00 |
SELECT CONVERT_TIMEZONE('America/Los_Angeles', cast('timestamp','2022-01-18 23:00:00'))
convert_timezone |
---|
2022-01-19 08:00:00+01:00 |
SELECT CONVERT_TIMEZONE('America/Los_Angeles', cast('timestamptz','2022-01-19 08:00:00'))
convert_timezone |
---|
2022-01-18 23:00:00 |
タイムスタンプ「2022-01-19 08:00:00」が、3 つの異なる構文を使用して、CET (GMT+1) から「America/Los_Angeles」に変換され、またその逆に変換されています。
CURRENT_DATE¶
説明
CURRENT_DATE
関数は、現在の日付を表す localdate
値を返します。
構文
CURRENT_DATE() : localdate
CURRENT_DATE : localdate
この関数は、括弧付きでも括弧なしでも呼び出すことができます。次の例を参照してください。
例
SELECT CURRENT_DATE() AS current_date_1, CURRENT_DATE AS current_date_2
current_date_1 |
current_date_2 |
---|---|
2025-01-22 |
2025-01-22 |
CURRENT_TIMESTAMP¶
説明
CURRENT_TIMESTAMP
関数は、現在の「タイムゾーン付きのタイムスタンプ」(timestamptz
型の値) を返します。
この関数は括弧なしで呼び出されます。つまり CURRENT_TIMESTAMP()
ではなく CURRENT_TIMESTAMP
を使用します。
さまざまなタイプ (localdate
、 time
など) で現時点の時間を取得するには、表「 現在日時の取得に使用する関数 」を参照してください。タイムゾーンコンポーネントが不要な場合、代わりに LOCALTIMESTAMP を使用することをお勧めします。この関数は、 CURRENT_TIMESTAMP
よりも多くのデータベースに委任できます。一部のデータベースはタイムゾーン付きの timestamp 型をサポートしていないため、Virtual DataPort は CURRENT_TIMESTAMP
関数をこうしたデータベースに委任できません。
構文
CURRENT_TIMESTAMP:timestamptz
例
SELECT CURRENT_TIMESTAMP as date_and_time_now
FROM dual();
date_and_time_now |
---|
2025年01月22日 10:03:12.186-05:00 |
EXTRACT¶
説明
EXTRACT
関数は、 datetime
の値から年、月、日、時、分、または秒を抽出します。
構文
EXTRACT ( <part of field> FROM <value> )
part of field
: 必須。以下のいずれかの値を指定できます。YEAR
: 日付の年を返します。MONTH
: 日付の月を返します。DAY
: 日付の日を返します。HOUR
: 日付の時間を返します。MINUTE
: 日付の分を返します。SECOND
: 日付の秒を返します。MILLISECOND
: 日付のミリ秒を返します。QUARTER
: 日付の四半期を返します。第 1 四半期は 1、最終四半期は 4 です。WEEK
: 年の週番号を返します。年の最初の週が 1 です。DOW
: 日曜日 (0) から土曜日 (6) までの曜日を返します。DOY
: 年の通産日を返します。年の最初の日が 1 です。
value
: 必須。日時式。
例
例 1
SELECT time, EXTRACT(YEAR FROM time) AS year
FROM view
time |
year |
---|---|
2021-06-25 19:19:41 |
2021 |
2019-01-31 22:59:56 |
2019 |
このクエリは、結果のフィールドの列から年を抽出します。
例 2
SELECT sale_date AS sale_date, EXTRACT(ADDDAY(CURRENT_DATE, 1)) AS next_day
FROM view
sale_date |
next_day |
---|---|
2020-06-30 |
1 |
2021-01-01 |
2 |
このクエリは、式によって返された datetime
の値の時間を抽出します。
FIRSTDAYOFMONTH¶
説明
FIRSTDAYOFMONTH
関数は、パラメータとして渡された日時の日フィールドを月の初日まで減算して返します。パラメータとして渡された日時がすでに月の初日の場合は、未変更のままパラメータを返します。
構文
FIRSTDAYOFMONTH( <value:localdate> ):localdate
FIRSTDAYOFMONTH( <value:timestamp> ):timestamp
FIRSTDAYOFMONTH( <value:timestamptz> ):timestamptz
; Deprecated signature because it uses the date (deprecated) type
FIRSTDAYOFMONTH( <value:date> ):date
value
: 必須。
例
SELECT sale_date, FIRSTDAYOFMONTH(sale_date) FROM v
sale_date |
firstdayofmonth |
---|---|
2019-06-29 19:19:41 |
2019-06-01 19:19:41 |
2021-01-08 22:59:56 |
2021-01-01 22:59:56 |
2021-01-01 22:59:56 |
2021-01-01 22:59:56 |
FIRSTDAYOFWEEK¶
説明
FIRSTDAYOFWEEK
関数は、パラメータとして渡された日時の日フィールドを週の初日になるまで減らして返します。
パラメータとして渡された日時がすでに週の初日である場合は、未変更のままパラメータを返します。
週の初日はビューとクエリのロケールによって異なります。
たとえば、ロケール us_pst
(米国太平洋標準時ゾーン) では週の初日は日曜日ですが、 es_euro
(スペインのタイムゾーン) では週の初日は月曜日です。
この関数がデータベースに委任された場合、結果は基盤となるデータベースによって異なります。
ビューの [Advanced] ダイアログでビューのロケールを確認できます。詳細については、管理ガイドの「 ロケール構成 」を参照してください。
構文
FIRSTDAYOFWEEK( <value:localdate> ):localdate
FIRSTDAYOFWEEK( <value:timestamp> ):timestamp
FIRSTDAYOFWEEK( <value:timestamptz> ):timestamptz
; Deprecated signature because it uses the date (deprecated) type
FIRSTDAYOFWEEK( <value:date> ):date
value
: 必須。
例
SELECT time, FIRSTDAYOFWEEK(time)
FROM v
time |
firstdayofweek |
---|---|
Wednesday, Jun 29, 2005 19:19:41 |
Monday, Jun 27, 2005 19:19:41 |
Monday, Jan 10, 2011 22:59:56 |
Monday, Jan 10, 2011 22:59:56 |
2 番目の行では曜日がすでに週の初日であるため、関数の出力は入力と同じになります。
FORMATDATE¶
説明
FORMATDATE
関数は、指定したパターンを使用して書式設定された日時型を含む文字列を返します。
この関数は、Java の日時書式設定システムに依存しています。Java の日付と時間のパターンについては、「 Virtual DataPort で使用される Java の日付と時刻のパターン 」に記載されています。
構文
FORMATDATE( <datetime pattern:text>, <datetime>, [ <i18n:text> ] ):text
datetime pattern
: 必須。2 番目のパラメータで渡された日時の書式を設定するために使用されるパターン (日付パターン形式の詳細については、「 日付と時間のパターン文字列 」を参照してください)。この関数をデータベースに委任するために、実行エンジンは、パターンを基盤となるデータベースで同等のパターンに変換します。データベースがそのパターンをサポートしていない場合、実行エンジンは関数をデータベースに委任する代わりに実行します。
datetime
: 必須。書式を設定する日時の値。式の型は、localdate、time、timestamp、timestamptz、または date のいずれかになります。i18n
: オプション。ロケール構成。date_pattern
に曜日のパターン (EEE
またはEEEE
) または月の名前 (MMM
またはMMMM
) が含まれる場合に、これら 2 つのエレメントを返すために使用する言語を指定します。このパラメータの値は、サーバーのロケールマップのいずれかである必要があります。たとえば、
us_pst
、us_est
、gb
、de
などです。
例
例 1
SELECT date, FORMATDATE('yyyy.MM.dd G ''at'' HH:mm:ss', date) AS
format_date
FROM v
date |
format_date |
---|---|
Jun 29, 2005 19:19:41 |
2005.06.29 AD at 19:19:41 |
Jan 8, 2011 22:59:56 |
2011.01.08 AD at 22:59:56 |
一重引用符で囲まれたテキストは解釈されず ('at'
を参照)、出力にそのままコピーされます。
注釈
date_pattern
に一重引用符 ('
) が含まれ、そのパターンも一重引用符で囲まれている場合は、次のようにこれらの引用符を別の一重引用符でエスケープする必要があります。
SELECT formatdate('yyyy.MM.dd G ''at'' HH:mm:ss', CURRENT_TIMESTAMP)
例 2
SELECT date, formatdate('h:mm a', date) AS format_date
FROM v
date |
format_date |
---|---|
Jun 29, 2005 19:19:41 |
7:19 PM |
Jan 8, 2011 22:59:56 |
22:59 PM |
例 3
SELECT date, formatdate('yyMMddHHmmss', date) AS format_date
FROM v
date |
format_date |
---|---|
Jun 29, 2005 19:19:41 |
050629191941 |
Jan 8, 2011 22:59:56 |
110108225956 |
例 4
SELECT date, FORMATDATE('MMMM, EEEE dd, yyyy', date, 'us_pst') AS
format_date
FROM v
date |
format_date |
---|---|
Jun 29, 2005 19:19:41 |
June, Wednesday 29, 2005 |
Jan 8, 2011 22:59:56 |
January, Saturday 8, 2011 |
例 5
SELECT date, FORMATDATE('MMMM, EEEE dd, yyyy', date, 'de') AS
format_date
FROM v
date |
format_date |
---|---|
Jun 29, 2005 19:19:41 |
Juni, Mittwoch 29, 2005 |
Jan 8, 2011 22:59:56 |
Januar, Samstag 08, 2011 |
例 4 と 5 の唯一の違いはパラメータ i18n
です。例 4 では、パラメータは us_pst
であるため、この関数は曜日と月の名前を英語で返します。例 5 では、ロケールが de
であるため、これらの値をドイツ語で返します。
GETDAY¶
説明
GETDAY
関数は、指定した日時の「日」フィールドを返します。この関数は、1 ~ 31 の範囲の long データ型を返します。
構文
GETDAY( <value:intervaldaysecond> ):long
GETDAY( <value:localdate> ):long
GETDAY( <value:timestamp> ):long
GETDAY( <value:timestamptz> ):long
; Deprecated signature because it uses the date (deprecated) type
GETDAY( <value:date> ):long
value
: 必須。日付の取得元の日時。
例
SELECT date, getday(date) as day
FROM v;
date |
day |
---|---|
Jun 29, 2005 19:19:41 |
29 |
Jan 8, 2011 22:59:56 |
8 |
GETDAYOFWEEK¶
説明
GETDAYOFWEEK
関数は、指定した日時の曜日の数値を返します。
週の初日が 1
、最後の日が 7
です。
週の初日はビューとクエリのロケールによって異なります。たとえば、ロケール us_pst
(米国太平洋標準時ゾーン) では週の初日は日曜日ですが、 es_euro
(スペインのタイムゾーン) では週の初日は月曜日です。
この関数がデータベースに委任された場合、結果は基盤となるデータベースによって異なります。たとえば、Oracle 11g では常に、週の初日は月曜日であるとみなされます。
ビューの [Advanced] ダイアログでビューのロケールを確認できます。詳細については、管理ガイドの「 ロケール構成 」を参照してください。
構文
GETDAYOFWEEK( <value:localdate> ):long
GETDAYOFWEEK( <value:timestamp> ):long
GETDAYOFWEEK( <value:timestamptz> ):long
; Deprecated signature because it uses the date (deprecated) type
GETDAYOFWEEK( <value:date> ):long
value
: 必須。
例
例 1
SELECT CURRENT_DATE AS today, GETDAYOFWEEK(CURRENT_DATE);
today |
getdayofweek |
---|---|
2020/12/07 |
2 |
例 2
SELECT CURRENT_DATE AS today, GETDAYOFWEEK(CURRENT_DATE)
CONTEXT('i18n' = 'ES_EURO');
today |
getdayofweek |
---|---|
2020/12/07 |
1 |
例 1 と例 2 の違いは CONTEXT
句に設定されているクエリのロケールです。 i18n
パラメータを CONTEXT
に追加しない場合、クエリはビューのロケールを使用します。
GETDAYOFYEAR¶
説明
GETDAYOFYEAR
関数は、その日時の年間通日の数値を返します。
年の初日が 1
です。
構文
GETDAYOFYEAR( <value:localdate> ):long
GETDAYOFYEAR( <value:timestamp> ):long
GETDAYOFYEAR( <value:timestamptz> ):long
; Deprecated signature because it uses the date (deprecated) type
GETDAYOFYEAR( <value:date> ):long
value
: 必須。
例
SELECT TO_LOCALDATE('dd-MM-yyyy', '01-01-2018') AS localdate
, GETDAYOFYEAR( TO_LOCALDATE('dd-MM-yyyy', '01-01-2013') ) AS day
localdate |
day |
---|---|
Jan 1, 2018 |
1 |
GETDAYSBETWEEN¶
説明
GETDAYSBETWEEN
関数は、2 つの日付の間の日数を返します。
両方の日付が同じ日を表す場合は、 0
を返します。
最初のパラメータの方が早い日付の場合は、正の数を返します。
2 番目のパラメータの方が早い日付の場合は、負の数を返します。
構文
GETDAYSBETWEEN( <value 1:localdate>, <value 2:localdate> ):long
GETDAYSBETWEEN( <value 1:timestamp>, <value 2:timestamp> ):long
GETDAYSBETWEEN( <value 1:timestamptz>, <value 2:timestamptz> ):long
; Deprecated signature because it uses the date (deprecated) type
GETDAYSBETWEEN( <value:date> ):long
value 1
: 必須。value 2
: 必須。
例
SELECT date1, date2, GETDAYSBETWEEN(date1, date2)
FROM view
date1 |
date2 |
getdaysbetween |
---|---|---|
Jan 1, 2013 0:00:00 AM |
Jan 2, 2013 0:00:00 AM |
1 |
Jan 1, 2013 0:00:00 AM |
Dec 31, 2013 0:00:00 AM |
364 |
GETHOUR¶
説明
GETHOUR
関数は、指定した日時の「時」フィールドを返します。この関数は、0 (12:00 A.M.) ~ 23 (11:00 P.M.) の範囲の long データ型を返します。
構文
GETHOUR( <value:intervaldaysecond> ):long
GETHOUR( <value:time> ):long
GETHOUR( <value:timestamp> ):long
GETHOUR( <value:timestamptz> ):long
; Deprecated signature because it uses the date (deprecated) type
GETHOUR( <value:date> ):long
value
: 必須。時間の取得元の日時。
例
SELECT date, gethour(date) as hour
FROM v;
date |
hour |
---|---|
Jun 29, 2005 19:20:41 |
19 |
GETMILLISECOND¶
GETMILLISECOND
関数は、指定した日時の「ミリ秒」フィールドを返します。
構文
GETMILLISECOND( <value:intervaldaysecond> ):long
GETMILLISECOND( <value:time> ):long
GETMILLISECOND( <value:timestamp> ):long
GETMILLISECOND( <value:timestamptz> ):long
; Deprecated signature because it uses the date (deprecated) type
GETMILLISECOND( <value:date> ):long
value
: 必須。
GETMINUTE¶
説明
GETMINUTE
関数は、指定した日時の「分」フィールドを返します。この関数は、0 ~ 59 の範囲の long 型の値を返します。
構文
GETMINUTE( <value:intervaldaysecond> ):long
GETMINUTE( <value:time> ):long
GETMINUTE( <value:timestamp> ):long
GETMINUTE( <value:timestamptz> ):long
; Deprecated signature because it uses the date (deprecated) type
GETMINUTE( <value:date> ):long
value
: 必須。分の取得元の日時。
例
SELECT date, getMinute(date) as minute
FROM v;
date |
minute |
---|---|
Jun 29, 2005 19:20:41 |
20 |
GETMONTH¶
説明
GETMONTH
関数は、指定した日時の月の数値を返します。この関数は、1 (1 月) ~ 12 (12 月) の範囲の long データ型を返します。
構文
GETMONTH( <value:intervalyearmonth> ):long
GETMONTH( <value:localdate> ):long
GETMONTH( <value:timestamp> ):long
GETMONTH( <value:timestamptz> ):long
; Deprecated signature because it uses the date (deprecated) type
GETMONTH( <value:date> ):long
datetime
: 必須。月の数値の取得元の日時。
例
SELECT date, getMonth(date) as month
FROM v
date |
month |
---|---|
Jun 29, 2005 19:20:41 |
6 |
GETMONTHSBETWEEN¶
説明
GETMONTHSBETWEEN
関数は、2 つの日時の間の月数を返します。
両方の日時が同じ月を表す場合は、0 を返します。
最初のパラメータの方が早い日付の場合は、正の数を返します。
2 番目のパラメータの方が早い日付の場合は、負の数を返します。
構文
GETMONTHSBETWEEN( <value 1:localdate>, <value 2:localdate> ):long
GETMONTHSBETWEEN( <value 1:timestamp>, <value 2:timestamp> ):long
GETMONTHSBETWEEN( <value 1:timestamptz>, <value 2:timestamptz> ):long
; Deprecated signature because it uses the date (deprecated) type
GETMONTHSBETWEEN( <value 1:date>, <value 2:date> ):long
value 1
: 必須。value 1
: 必須。
例
SELECT date1, date2, GETMONTHSBETWEEN(date1, date2)
date1 |
date2 |
getmonthsbetween |
---|---|---|
Jan 1, 2013 0:00:00 AM |
Feb 1, 2013 0:00:00 AM |
1 |
Jan 1, 2013 0:00:00 AM |
Dec 31, 2013 0:00:00 AM |
11 |
Jan 1, 2013 0:00:00 AM |
Jan 15, 2013 0:00:00 AM |
0 |
GETQUARTER¶
説明
GETQUARTER
関数は、指定した日時の年の四半期を返します。
結果は 1 ~ 4 の範囲です。1 は年の第 1 四半期 (1 月~ 3 月)、2 は第 2 四半期 (4 月~ 6 月) のようになります。
構文
GETQUARTER( <value:localdate> ):long
GETQUARTER( <value:timestamp> ):long
GETQUARTER( <value:timestamptz> ):long
; Deprecated signature because it uses the date (deprecated) type
GETQUARTER( <value:date> ):long
datetime
: 必須。四半期の取得元の日時。
例
SELECT date, GETQUARTER(date) as quarter
FROM v
date |
quarter |
---|---|
Jun 29, 2015 19:20:41 |
2 |
Mar 1, 2015 00:00:00 |
1 |
GETSECOND¶
説明
GETSECOND
関数は、指定した日時の「秒」フィールドを返します。この関数は、0 ~ 59 の範囲の long 型の値を返します。
構文
GETSECOND( <value:intervaldaysecond> ):long
GETSECOND( <value:time> ):long
GETSECOND( <value:timestamp> ):long
GETSECOND( <value:timestamptz> ):long
; Deprecated signature because it uses the date (deprecated) type
GETSECOND( <value:date> ):long
value
: 必須。秒の取得元の日時。
例
SELECT date, GETSECOND(date) as second
FROM v
date |
second |
---|---|
Jun 29, 2005 19:20:41 |
41 |
GETTIMEFROMMILLIS¶
説明
GETTIMEFROMMILLIS
関数は、 エポック と呼ばれる標準基本時間 (1970 年 1 月 1 日、00:00:00 GMT) 以降の指定したミリ秒数を表す「タイムゾーン付きタイムスタンプ」を返します。
構文
GETTIMEFROMMILLIS( <value:long> ):timestamptz
value
: 必須。
例
SELECT longsample, gettimefrommillis(longsample) as date
FROM v
longsample |
date |
---|---|
0 |
Jan 01, 1970 01:00:00+01:00 |
711745200000 |
Jul 21, 1992 21:00:00+02:00 |
GETTIMEINMILLIS¶
説明
GETTIMEINMILLIS
関数は、1970 年 1 月 1 日 00:00:00 GMT からパラメータとして渡された日時までのミリ秒数を返します。
日時が 1970 年より前の場合は、負の数を返します。
構文
GETTIMEINMILLIS( <value:localdate> ):long
GETTIMEINMILLIS( <value:timestamp> ):long
GETTIMEINMILLIS( <value:timestamptz> ):long
; Deprecated signature because it uses the date (deprecated) type
GETTIMEINMILLIS( <value:date> ):long
value
: 必須。
例
SELECT date, getTimeInMillis(date) as milliseconds
FROM v
date |
milliseconds |
---|---|
Jun 29, 2005 19:20:41 |
1120098041000 |
GETWEEK¶
説明
GETWEEK
関数は、指定した日時の年の通算週を返します。
年の最初の週が 1 です。ISO8601 標準で定義されているように、年の最初の週は、少なくとも 4 日が年に含まれる週です。このような定義の結果、年によっては、年の 1 日目が前年に属するとみなされる場合があります。
構文
GETWEEK( <value:localdate> ):long
GETWEEK( <value:timestamp> ):long
GETWEEK( <value:timestamptz> ):long
; Deprecated signature because it uses the date (deprecated) type
GETWEEK( <value:date> ):long
value
: 必須。年の通算週の取得元の日時。
例
SELECT date, GETWEEK(date) as week
FROM v
Date |
week |
---|---|
Jan 01, 2016 0:00:00 |
53 |
Jan 10, 2016 0:00:00 |
1 |
Jan 11, 2016 0:00:00 |
2 |
GETWEEKSBETWEEN¶
説明
GETWEEKSBETWEEN
関数は、2 つの日付の間の週数を返します。
両方の日付が同じ週を表す場合は、 0
を返します。
最初のパラメータの方が早い日付の場合は、正の数を返します。
2 番目のパラメータの方が早い日付の場合は、負の数を返します。
構文
GETWEEKSBETWEEN( <value 1:localdate>, <value 2:localdate> ):long
GETWEEKSBETWEEN( <value 1:timestamp>, <value 2:timestamp> ):long
GETWEEKSBETWEEN( <value 1:timestamptz>, <value 2:timestamptz> ):long
; Deprecated signature because it uses the date (deprecated) type
GETWEEKSBETWEEN( <value:date> ):long
value 1
: 必須。value 2
: 必須。
例
SELECT date1, date2, GETWEEKSBETWEEN(date1, date2)
FROM view
date1 |
date2 |
getweeksbetween |
---|---|---|
Jan 1, 2024 0:00:00 AM |
Jan 28, 2024 0:00:00 AM |
4 |
Jul 21, 2024 0:00:00 AM |
Jul 3, 2024 0:00:00 AM |
-2 |
GETYEAR¶
説明
GETYEAR
関数は、指定した日時の「年」フィールドを返します。
構文
GETYEAR( <value:intervalyearmonth> ):long
GETYEAR( <value:localdate> ):long
GETYEAR( <value:timestamp> ):long
GETYEAR( <value:timestamptz> ):long
; Deprecated signature because it uses the date (deprecated) type
GETYEAR( <value:date> ):long
value
: 必須。年の取得元の日時。
例
SELECT date, GETYEAR(date) as year
FROM Dual();
date |
year |
---|---|
Jun 29, 2005 19:20:41 |
2005 |
LASTDAYOFMONTH¶
説明
LASTDAYOFMONTH
関数は、パラメータとして渡された日時の日フィールドを月の最終日まで増やして返します。パラメータとして渡された日時がすでに月の最終日の場合は、未変更のままパラメータを返します。
構文
LASTDAYOFMONTH( <value:localdate> ):localdate
LASTDAYOFMONTH( <value:timestamp> ):timestamp
LASTDAYOFMONTH( <value:timestamptz> ):timestamptz
; Deprecated signature because it uses the date (deprecated) type
LASTDAYOFMONTH( <value:date> ):date
value
: 必須。
例
SELECT time, LASTDAYOFMONTH(time)
FROM v
time |
lastdayofmonth |
---|---|
Jun 30, 2005 19:19:41 |
Jun 30, 2005 19:19:41 |
Feb 12, 2011 22:59:56 |
Feb 28, 2011 22:59:56 |
最初の行では日がすでに月の最終日であるため、関数の出力は入力と同じになります。
LASTDAYOFWEEK¶
説明
LASTDAYOFWEEK
関数は、パラメータとして渡された日時の日フィールドを週の最終日になるまで増やして返します。
パラメータとして渡された日時がすでに週の最終日である場合は、未変更のままパラメータを返します。
週の最終日はビューとクエリのロケールによって異なります。
たとえば、ロケール us_pst
(米国太平洋標準時ゾーン) では週の最終日は土曜日ですが、 es_euro
(スペインのタイムゾーン) では週の最終日は日曜日です。
この関数がデータベースに委任された場合、結果は基盤となるデータベースによって異なります。
ビューの [Advanced] ダイアログでビューのロケールを確認できます。詳細については、管理ガイドの「 ロケール構成 」を参照してください。
構文
LASTDAYOFWEEK( <value:localdate> ):localdate
LASTDAYOFWEEK( <value:timestamp> ):timestamp
LASTDAYOFWEEK( <value:timestamptz> ):timestamptz
; Deprecated signature because it uses the date (deprecated) type
LASTDAYOFWEEK( <value:date> ):date
value
: 必須。
例
SELECT time, LASTDAYOFWEEK(time)
FROM v
time |
lastdayofweek |
---|---|
Thursday, Jun 30, 2005 19:19:41 |
Sunday, Jul 03, 2005 19:19:41 |
Saturday, Dec 31, 2011 22:59:56 |
Sunday, Jan 1, 2012 22:59:56 |
Sunday, Jul 03, 2005 19:19:41 |
Sunday, Jul 03, 2005 19:19:41 |
LOCALTIME¶
説明
LOCALTIME
関数は、クエリタイムゾーンの現在の時刻を表す time
型の値を返します。
さまざまなタイプ (localdate
、 time
など) で現時点の時間を取得するには、表「 現在日時の取得に使用する関数 」を参照してください
この関数は括弧なしで呼び出します。つまり LOCALTIME()
ではなく LOCALTIME
を使用します。
構文
LOCALTIME:date
例
SELECT LOCALTIME as time_now
FROM dual();
time_now |
---|
04:20:00.687 |
LOCALTIMESTAMP¶
説明
LOCALTIMESTAMP
関数は、クエリタイムゾーンの現在の日付と時刻を表す timestamp
型の値を返します。
さまざまなタイプ (localdate
、 time
など) で現時点の時間を取得するには、表「 現在日時の取得に使用する関数 」を参照してください
この関数は括弧なしで呼び出されます。つまり LOCALTIMESTAMP()
ではなく LOCALTIMESTAMP
を使用します。
構文
LOCALTIMESTAMP:timestamp
例
SELECT LOCALTIMESTAMP as date_and_time_now
FROM dual();
date_and_time_now |
---|
2025-01-22 04:20:00.000 |
NEXTWEEKDAY¶
説明
NEXTWEEKDAY
関数は、この日時の日フィールドをパラメータ weekDay
で指定した曜日まで増やして返します。
パラメータ datetime
がすでに weekDay
の日付を表している場合、この関数は日付を翌週の同じ曜日まで増やします。
曜日は、日曜日 = 0、月曜日 = 1、火曜日 = 2 のようになります。
構文
NEXTWEEKDAY( <value:localdate>, <week day:int> ):localdate
NEXTWEEKDAY( <value:timestamp>, <week day:int> ):timestamp
NEXTWEEKDAY( <value:timestamptz>, <week day:int> ):timestamptz
; Deprecated signature because it uses the date (deprecated) type
NEXTWEEKDAY( <value:date>, <week day:int> ):date
value
: 必須。日時式。week day
: 必須。日時を増やす対象の曜日。
例
SELECT time, NEXTWEEKDAY(time, 3)
FROM v
time |
nextweekday |
---|---|
Thursday, Jun 30, 2005 19:19:41 |
Wednesday, Jul 6, 2005 19:19:41 |
Monday, Feb 7, 2011 22:59:56 |
Feb, Wed 9, 2011 22:59:56 |
Wednesday, Feb 9, 2011 9:37:02 |
Wednesday, Feb 16, 2011 9:37:02 |
NOW¶
説明
NOW
関数は、現在の「タイムゾーン付きのタイムスタンプ」を表す timestamptz
型の値を返します。
NOW()
は CURRENT_TIMESTAMP と同じです。 CURRENT_TIMESTAMP
は SQL 標準での関数の名前です。
PREVIOUSWEEKDAY¶
説明
PREVIOUSWEEKDAY
関数は、この日時の日フィールドをパラメータ weekDay
で指定した曜日まで減らして返します。
パラメータ datetime
がすでに weekDay
の日付を表している場合、この関数は日時を前週の同じ曜日まで減らします。
曜日は、日曜日 = 0、月曜日 = 1、火曜日 = 2 のようになります。
構文
PREVIOUSWEEKDAY( <value:localdate>, <week day:int> ):localdate
PREVIOUSWEEKDAY( <value:timestamp>, <week day:int> ):timestamp
PREVIOUSWEEKDAY( <value:timestamptz>, <week day:int> ):timestamptz
; Deprecated signature because it uses the date (deprecated) type
PREVIOUSWEEKDAY( <value:date>, <week day:int> ):date
value
: 必須。日時式。week day
: 必須。日時を減らす対象の曜日。
例
SELECT time, previousweekday(time, 2)
FROM v
time |
previousweekday |
---|---|
Thursday, Jun 30, 2005 19:19:41 |
Tuesday, Jun 28, 2005 19:19:41 |
Monday, Feb 7, 2011 22:59:56 |
Tuesday, Feb 1, 2011 22:59:56 |
Tuesday, Jan 4, 2011 9:37:02 |
Tuesday, Dec 28, 2010 9:37:02 |
TO_DATE¶
説明
TO_DATE
関数は、特定の書式の日時を含む text
値を、この日付を表す date
型の値に変換します。
重要
この関数は非推奨になっており、Denodo の次期メジャーバージョンで削除される可能性があるため、新しいプロジェクトで使用しないようにしてください。非推奨となっている理由は、最初の入力パラメータが同じく非推奨の date 型であるためです。代わりに、 TO_LOCALDATE 、 TO_TIME 、 TO_TIMESTAMP 、または TO_TIMESTAMPTZ のいずれかを使用してください。日時値と関数の詳細については、『VQL ガイド』の「 日付、タイムスタンプ、間隔のデータ型 」を参照してください。
非推奨のすべての機能のリストについては、「 Denodo Platform で廃止された機能 」のセクションを参照してください。
構文
TO_DATE( <date pattern:text>, <value:text> [, <i18n:text> ] [, <timestamp:boolean> ] ):date
date pattern
: 必須。value
の日時の書式を記述するパターン。Java クラスjava.text.SimpleDataFormat
で定義されている構文に従います (詳細については、「 日付と時間のパターン文字列 」を参照してください)。この関数をデータベースに委任するために、Virtual DataPort は、パターンを基盤となるデータベースで同等のパターンに変換します。データベースがそのパターンをサポートしていない場合、Virtual DataPort の実行エンジンは関数をデータベースに委任する代わりに実行します。
value
: 必須。パラメータdatePattern
のパターンに従った日付を含む文字列。i18n
: オプション。ロケール構成。date pattern
に曜日 (EEE
またはEEEE
) または月の名前 (MMM
またはMMMM
) のパターンが含まれる場合、このパラメータは、関数がこれらの値を予期する言語を示します。たとえば、value
にドイツ語の月の名前が含まれる場合、データベースのロケールもde
でないかぎり、このパラメータの値はde
にする必要があります。このパラメータの値は、サーバーのロケールマップのいずれかである必要があります。たとえば、
us_pst
、us_est
、gb
、de
などです。timestamp
: オプション。false
の場合、この関数は、時刻を表すフィールド (時、分、秒、ミリ秒) に0
を設定します。このパラメータにtrue
を渡した場合は、渡さない場合と同じ結果になります。
例
例 1
SELECT TO_DATE('M dd yyyy HH:mm:ss', '3 05 2020 21:17:05')
FROM Dual();
to_date |
---|
2020-03-05 21:17:05-08:00 |
例 2
SELECT TO_DATE ('yyyyMMddHHmmss', '20200701102030')
FROM Dual();
to_date |
---|
2020-07-01 10:20:30-07:00 |
例 3
SELECT TO_DATE('yyyy-MM-dd''T''HH:mm:ss.SSS', '2020-07-04T12:08:56.235')
FROM Dual();
to_date |
---|
2020-07-04 12:08:56.235-07:00 |
例 4
SELECT TO_DATE('yyyy-MM-dd''T''HH:mm:ss.SSS', '2020-07-04T12:08:56.235', false)
FROM Dual();
to_date |
---|
2020-07-04 00:00:00-07:00 |
例 3 と例 4 に関する注意: Java クラス java.text.SimpleDataFormat で定義されているように、日付パターンのリテラルである部分は一重引用符で囲む必要があります。前述の 2 つの例では T
です。ただし、Virtual DataPort リテラルでは一重引用符は特殊文字のため、一重引用符をもう 1 つ付けてエスケープする必要があります。このような理由から、例 3 と例 4 の日付パターンでは ''T''
が使用されています。
例 5
SELECT date_string, TO_DATE('MMMM, EEEE dd, yyyy', date_string, 'de')
FROM v
date_string |
to_date |
---|---|
Juni, Mittwoch 29, 2019 |
2019-06-29 00:00:00-07:00 |
Januar, Samstag 08, 2021 |
2021-01-08 00:00:00-08:00 |
この例では、パラメータ i18n
が de
であるため、この関数は date_string
の月の名前 (MMM
) と曜日の名前 (EEEE
) はドイツ語であると予期します。
TO_LOCALDATE¶
説明
TO_LOCALDATE
関数は、特定の書式の日時を含む text
値を、この日時を表す localdate
型の値に変換します。
構文
TO_LOCALDATE( <localdate pattern:text>, <value:text> [, <language:text> ] ):localdate
localdate pattern
: 必須。value
の日付と時間の書式を記述するパターン。Java クラスjava.text.SimpleDataFormat
で定義されている構文に従います (詳細については、「 日付と時間のパターン文字列 」を参照してください)。この関数をデータベースに委任するために、Virtual DataPort は、パターンを基盤となるデータベースで同等のパターンに変換します。データベースがそのパターンをサポートしていない場合、Virtual DataPort の実行エンジンは関数をデータベースに委任する代わりに実行します。
value
: 必須。パラメータlocaldate Pattern
のパターンに従ったローカル日付を含む文字列。language
: オプション。ロケール構成。localdate pattern
に曜日 (EEE
またはEEEE
) または月の名前 (MMM
またはMMMM
) のパターンが含まれる場合、このパラメータは、関数がこれらの値を予期する言語を示します。たとえば、value
にドイツ語の月の名前が含まれる場合、このパラメータの値はde
にする必要があります。このパラメータの値は、Java 言語の名前の 1 つでなければなりません。
例
例 1
SELECT TO_LOCALDATE ('yyyyMMdd', '20200701')
FROM Dual();
to_localdate |
---|
2020-07-01 |
例 2
SELECT TO_LOCALDATE('M dd yyyy HH:mm:ss', '3 05 2020 21:17:05')
FROM Dual();
to_localdate |
---|
2020-03-05 |
例 3
SELECT TO_LOCALDATE('yyyy-MM-dd''T''HH:mm:ss.SSS', '2020-07-04T12:08:56.235')
FROM Dual();
to_localdate |
---|
2020-07-04 |
注釈
Java クラス java.text.SimpleDataFormat で定義されているように、日付パターンのリテラルである部分は一重引用符で囲む必要があります。
この例では、 T
です。ただし、Virtual DataPort リテラルでは一重引用符は特殊文字であるため、一重引用符をもう 1 つ付けてエスケープする必要があります。このような理由から、日付パターンでは ''T''
が使用されています。
例 4
SELECT date_string, TO_LOCALDATE('MMMM, EEEE dd, yyyy', date_string, 'de')
FROM v
date_string |
to_localdate |
---|---|
Juni, Mittwoch 29, 2005 |
Wed Jun 29 2005 |
Januar, Samstag 08, 2011 |
Sat Jan 08 2011 |
この例では、パラメータ language
が de
であるため、この関数は date_string
の月の名前 (MMM
) と曜日の名前 (EEEE
) はドイツ語であると予期します。
TO_TIME¶
説明
TO_TIME
関数は、特定の書式の日時を含む text
値を、この日時の時刻部分を表す time
型の値に変換します。
構文
TO_TIME( <time pattern:text>, <value:text> [, <language:text> ] ):time
time pattern
: 必須。value
の日付と時間の書式を記述するパターン。Java クラスjava.text.SimpleDataFormat
で定義されている構文に従います (詳細については、「 日付と時間のパターン文字列 」を参照してください)。この関数をデータベースに委任するために、Virtual DataPort は、パターンを基盤となるデータベースで同等のパターンに変換します。データベースがそのパターンをサポートしていない場合、Virtual DataPort の実行エンジンは関数をデータベースに委任する代わりに実行します。
value
: 必須。パラメータtime pattern
のパターンに従った日時を含む文字列。language
: オプション。ロケール構成。time pattern
に曜日 (EEE
またはEEEE
) または月の名前 (MMM
またはMMMM
) のパターンが含まれる場合、このパラメータは、関数がこれらの値を予期する言語を示します。たとえば、value
にドイツ語の月の名前が含まれる場合、このパラメータの値はde
にする必要があります。このパラメータの値は、Java 言語の名前の 1 つでなければなりません。
例
例 1
SELECT TO_TIME ('HHmmss', '102030')
FROM Dual();
to_time |
---|
10:20:30 |
例 2
SELECT TO_TIME('M dd yyyy HH:mm:ss', '3 05 2010 21:17:05')
FROM Dual();
to_time |
---|
21:17:05 |
例 3
SELECT TO_TIME('yyyy-MM-dd''T''HH:mm:ss.SSS', '2001-07-04T12:08:56.235')
FROM Dual();
to_time |
---|
12:08:56.235 |
注釈
Java クラス java.text.SimpleDataFormat で定義されているように、日付パターンのリテラルである部分は一重引用符で囲む必要があります。
この例では、 T
です。ただし、Virtual DataPort リテラルでは一重引用符は特殊文字であるため、一重引用符をもう 1 つ付けてエスケープする必要があります。このような理由から、日付パターンでは ''T''
が使用されています。
TO_TIMESTAMP¶
説明
TO_TIMESTAMP
関数は、特定の書式の日時を含む text
値を、この日時を表す timestamp
型の値に変換します。
構文
TO_TIMESTAMP( <timestamp pattern:text>, <value:text> [, <language:text> ] ):timestamp
timestamp pattern
: 必須。value
の日付と時間の書式を記述するパターン。Java クラスjava.text.SimpleDataFormat
で定義されている構文に従います (詳細については、「 日付と時間のパターン文字列 」を参照してください)。この関数をデータベースに委任するために、Virtual DataPort は、パターンを基盤となるデータベースで同等のパターンに変換します。データベースがそのパターンをサポートしていない場合、Virtual DataPort の実行エンジンは関数をデータベースに委任する代わりに実行します。
value
: 必須。パラメータtimestamp pattern
のパターンに従った日時を含む文字列。language
: オプション。ロケール構成。timestamp pattern
に曜日 (EEE
またはEEEE
) または月の名前 (MMM
またはMMMM
) のパターンが含まれる場合、このパラメータは、関数がこれらの値を予期する言語を示します。たとえば、value
にドイツ語の月の名前が含まれる場合、このパラメータの値はde
にする必要があります。このパラメータの値は、Java 言語の名前の 1 つでなければなりません。
例
例 1
SELECT TO_TIMESTAMP('M dd yyyy HH:mm:ss', '3 05 2020 21:17:05')
FROM Dual();
to_timestamp |
---|
2020-03-05 21:17:05 |
例 2
SELECT TO_TIMESTAMP ('yyyyMMddHHmmss', '20200701102030')
FROM Dual();
to_timestamp |
---|
2020-07-01 10:20:30 |
例 3
SELECT TO_TIMESTAMP('yyyy-MM-dd''T''HH:mm:ss.SSS', '2021-07-04T12:08:56.235')
FROM Dual();
to_timestamp |
---|
2021-07-04 12:08:56.235 |
例 4
SELECT date_string, TO_TIMESTAMP('MMMM, EEEE dd, yyyy', date_string, 'de')
FROM v
date_string |
to_timestamp |
---|---|
Juni, Mittwoch 29 01:24:58, 2005 |
Wed Jun 29 01:24:58.000 2005 |
Januar, Samstag 08 03:15:01, 2011 |
Sat Jan 08 03:15:01.000 2011 |
この例では、パラメータ language
が de
であるため、この関数は date_string
の月の名前 (MMM
) と曜日の名前 (EEEE
) はドイツ語であると予期します。
TO_TIMESTAMPTZ¶
説明
TO_TIMESTAMPTZ
関数は、特定の書式の日時を含む text
値を、この日時を表す timestamptz
型の値に変換します。
構文
TO_TIMESTAMPTZ( <timestamptz pattern:text>, <value:text> [, <language:text> ] ):timestamptz
timestamptz pattern
: 必須。value
の日付と時間の書式を記述するパターン。Java クラスjava.text.SimpleDataFormat
で定義されている構文に従います (詳細については、「 日付と時間のパターン文字列 」を参照してください)。この関数をデータベースに委任するために、Virtual DataPort は、パターンを基盤となるデータベースで同等のパターンに変換します。データベースがそのパターンをサポートしていない場合、Virtual DataPort の実行エンジンは関数をデータベースに委任する代わりに実行します。
value
: 必須。パラメータtimestamptz Pattern
のパターンに従った日時を含む文字列。language
: オプション。ロケール構成。timestamptz pattern
に曜日 (EEE
またはEEEE
) または月の名前 (MMM
またはMMMM
) のパターンが含まれる場合、このパラメータは、関数がこれらの値を予期する言語を示します。たとえば、value
にドイツ語の月の名前が含まれる場合、このパラメータの値はde
にする必要があります。このパラメータの値は、Java 言語の名前の 1 つでなければなりません。
例
例 1
SELECT TO_TIMESTAMPTZ('M dd yyyy HH:mm:ss', '3 05 2021 21:17:05')
FROM Dual();
to_timestamptz |
---|
2021-03-05 21:17:05-08:00 |
例 2
SELECT TO_TIMESTAMPTZ ('yyyyMMddHHmmss', '20200701102030')
FROM Dual();
to_timestamptz |
---|
Thu Jul 01 10:20:30.000 2010 +02:00 |
例 3
SELECT TO_TIMESTAMPTZ('yyyy-MM-dd''T''HH:mm:ss.SSS', '2001-07-04T12:08:56.235')
FROM Dual();
to_timestamptz |
---|
2020-07-01 10:20:30-07:00 |
例 4
SELECT date_string, TO_TIMESTAMPTZ('MMMM, EEEE dd, yyyy', date_string, 'de')
FROM v
date_string |
to_timestamptz |
---|---|
Juni, Mittwoch 29 01:24:58, 2005 |
Wed Jun 29 01:24:58.000 2005 +02:00 |
Januar, Samstag 08 03:15:01, 2011 |
Sat Jan 08 03:15:01.000 2011 +01:00 |
この例では、パラメータ language
が de
であるため、この関数は date_string
の月の名前 (MMM
) と曜日の名前 (EEEE
) はドイツ語であると予期します。
TRUNC¶
説明
TRUNC
関数は、パラメータとして渡された日付を特定の単位に切り詰めて返します。
この関数の構文は、Oracle データベースの関数 TRUNC(date)
と同じです。パラメータ pattern
の構文も同じです。
構文
TRUNC( <value:localdate> [, <pattern:text> ] ):localdate
TRUNC( <value:time> [, <pattern:text> ] ):time
TRUNC( <value:timestamp> [, <pattern:text> ] ):timestamp
TRUNC( <value:timestamptz> [, <pattern:text> ] ):timestamptz
; Deprecated signature because it uses the date (deprecated) type
TRUNC( <value:date> [, <pattern:text> ] ):date
value
: 必須。切り詰める日時。pattern
:datetime
は、このパラメータで指定された単位に切り詰められます。pattern
が指定されていない場合、datetime
は最も近い日付に切り詰められます。次の表に、このパラメータに指定可能な値を示します。
パターン |
切り詰める単位 |
---|---|
CC SCC |
世紀 |
SYYYY YYYY YEAR SYEAR YYY YY Y |
年 |
IYYY IYY IY I |
ISO 年 |
Q |
四半期 |
MONTH MON MM RM |
月 |
WW |
年の初日と同じ曜日 |
IW |
ISO 年の初日と同じ曜日 |
W |
月の初日と同じ曜日 |
DDD DD J |
日 |
DAY DY D |
週の開始日 |
HH HH12 HH24 |
時 |
MI |
分 |
例
例 1
SELECT sale_date, TRUNC(sale_date)
FROM v
sale_date |
trunc |
---|---|
2021-06-29 19:19:41 |
2021-06-29 00:00:00 |
2021-01-08 22:59:56 |
2021-01-08 00:00:00 |
パラメータ pattern が存在しないため、日付は日に切り詰められます。
例 2
SELECT sale_date, TRUNC(sale_date, 'MONTH')
FROM v
sale_date |
trunc |
---|---|
2021-06-29 19:19:41 |
2021-06-01 00:00:00 |
2021-01-08 22:59:56 |
2021-01-01 22:59:56 |
例 3
SELECT sale_date, TRUNC(sale_date, 'Q')
FROM v
sale_date |
trunc |
---|---|
2021-06-29 19:19:41 |
2021-04-01 00:00:00 |
2021-01-08 22:59:56 |
2021-01-01 00:00:00 |
パターン Q
は、日付を四半期に切り詰めることを意味します。