pl sql datetime format
PL SQL Datetime Formatと、Datetime、Timestamp、およびIntervalに関するいくつかの便利な関数について学習します。
の中に PL / SQL トリガー に PLSQLシリーズ 、 それらのタイプ、使用法、および利点について学びました。
この記事では、PL / SQLの日付と時刻、およびDatetime、Timestamp、およびIntervalデータ型のいくつかの関数について説明します。また、日時と間隔についていくつかの基本的な操作を行います。
議論から始めましょう!
学習内容:
PLSQL日時形式
PL / SQLには、日付、間隔、および時刻を保持および計算できる日付/時刻データ型があります。日付または時刻型の変数には、DateTimeという値が含まれています。間隔データ型を保持する変数は、間隔と呼ばれます。これらの各データ型には、値を設定するフィールドがあります。
DateTimeデータ型は次のとおりです。
- タイムスタンプ
- タイムゾーン付きのタイムスタンプ
- ローカルタイムゾーンのタイムスタンプ
- 日付
間隔のデータ型は次のとおりです。
- 2番目の間隔日
- 年から月までの間隔
日付
固定長日時は、データ型DATEに格納されます。これは、真夜中から秒単位の時刻で構成されます。日付セクションは当月の初日を指し、時間セクションは真夜中を指します。数値と文字の両方のデータ型で日付と時刻の情報を保持します。
SYSDATEは、現在の時刻と日付をフェッチする日付関数です。適切な日付範囲は、紀元前4712年1月1日から西暦9999年12月31日までです。デフォルト形式の文字値(Oracle初期化パラメータNLS_DATE_FORMATによって決定される)は、PL / SQLによって自然にDATE値に変換されます。
日付に足し算や引き算などの数学演算を適用できます。 PL / SQLは、整数リテラルを日数の形式で解釈します。 例えば、 SYSDATE +1は明日を指します。
タイムスタンプ
タイムスタンプデータ型は、DATEデータ型の拡張です。年、月、時、秒を保持するために使用されます。デフォルトのタイムスタンプ形式は、Oracle初期化パラメータNLS_TIMESTAMP_FORMATによって決定されます。
構文:
TIMESTAMP((precision))ここで、精度は必須パラメーターではなく、秒フィールドの小数部分にある桁数のカウントを指します。精度は0から9までの整数リテラルでなければなりません。デフォルト値は6に設定されています。
タイムゾーン付きのタイムスタンプ
このデータ型はTIMESTAMPデータ型の拡張であり、タイムゾーンの変位が含まれています。タイムゾーンの変位は、現地時間と協定世界時(UTC)の間の時間差(時間と分)です。
タイムゾーン形式のデフォルトのタイムスタンプは、Oracle初期化パラメータNLS_TIMESTAMP_TZ_FORMATによって決定されます。 構文:
TIMESTAMP((precision)) WITH TIME ZONEここで、精度は必須パラメーターではなく、秒フィールドの小数部分にある桁数のカウントを指します。精度は0から9までの整数リテラルでなければなりません。デフォルト値は6に設定されています。
Android携帯電話に最適なスパイウェア
タイムゾーンは記号で表すことができます。 「US / Pacific」のような長い形式でも、「PDT」のような短い形式でも、両方の組み合わせでもかまいません。したがって、このデータ型は、地理的な場所全体の情報をカバーおよび計算するために使用されます。
ローカルタイムゾーンのタイムスタンプ
ローカルタイムゾーンデータ型のタイムスタンプは、TIMESTAMPデータ型の拡張であり、タイムゾーンの変位が含まれています。タイムゾーンの変位は、現地時間と協定世界時(UTC)の間の時間差(時間と分)です。
構文:
TIMESTAMP ((precision)) WITH LOCAL TIME ZONEここで、精度は必須のパラメータではなく、秒のフィールドの小数部分にある桁数のカウントを指します。精度は0から9までの整数リテラルでなければなりません。デフォルト値は6に設定されています。
TIMESTAMP WITH LOCAL TIME ZONEは、データベースに値を挿入するときに値がデータベースのタイムゾーンに設定され、タイムゾーンの変位がデータベース列に保持されないため、TIMESTAMP WITH TIMEZONEとは異なります。ただし、値をフェッチすると、ローカルタイムゾーンセッションで返されます。
年から月までの間隔
このデータ型は、年と月の間隔を格納および計算するために使用されます。
構文:
INTERVAL YEAR ((precision)) TO MONTHここで、精度は1年のフィールドの桁数のカウントです。精度は0から4までの整数リテラルでなければなりません。デフォルト値は2に設定されています。
2年目までの間隔
年から秒までの間隔データ型は、日、時間、分、および秒の間隔を格納および計算するために使用されます。
構文:
INTERVAL DAY ((l_precision)) TO SECOND ((fractional_s_precision))ここでは、 l_precision そして fractional_s_precision は、それぞれ日と秒のフィールドの桁数のカウントです。
精度は0から9までの整数リテラルでなければなりません。デフォルト値はそれぞれ2と6に設定されています。
フィールド値:日時と間隔
- 2番目: 有効なDateTime範囲の値は00〜59.9(m)です。ここで、mは時間の小数秒を示します。有効な間隔範囲の値は00〜59.9(m)です。ここで、mは間隔の小数秒を示します。
- 分: 有効なDateTime範囲の値は00から59です。有効な間隔範囲の値は0から59です。
- 時間: 有効なDateTime範囲の値は00から23です。有効な間隔範囲の値は0から23です。
- 日: 有効なDateTime範囲の値は01から31です(ロケールカレンダーの規則に従って、YEARとMONTHの値によって制限されます)。有効な間隔範囲の値は、ゼロ以外の整数です。
- 月: 有効なDateTime範囲の値は01から12です。有効な間隔範囲の値は0から11です。
- 年: 有効なDateTime範囲の値は、0年を含まない-4712〜9999です。有効な間隔範囲の値は、ゼロ以外の整数です。
- TIMEZONE_HOUR: 有効なDateTime範囲の値は-12から14で、夏時間の変更が含まれます。これは、有効な間隔範囲には適用されません。
- TIMEZONE_MINUTE: 有効なDateTime範囲の値は00〜59です。これは、有効な間隔範囲には適用されません。
- TIMEZONE_REGION: 有効なDateTime範囲の値は、DATEまたはTIMESTAMPには適用されません。これは、有効な間隔範囲には適用されません。
- TIMEZONE_ABBR: 有効なDateTime範囲の値は、DATEまたはTIMESTAMPには適用されません。これは、有効な間隔範囲には適用されません。
日時のPLSQL関数
ここで、mとnには日時の値が含まれています。
| Sl No. | 名前 | 目的 |
|---|---|---|
| 7 | SYSDATE() | 現在の日時を取得します。 |
| 1 | LAST_DAY(m) | 月の最後の日を取得します。 |
| 二 | ADD_MONTHS(m、n) | mか月とnか月を合計します。 |
| 3 | MONTHS_BETWEEN(m、n) | mとnの間の月数のカウントを取得します。 |
| 4 | NEXT_DAY(m、day) | mの翌日の日時を取得します。 |
| 5 | 次回 | ユーザーが要求したタイムゾーンから時間/日を取得します。 |
| 6 | ラウンド(m (、unit)) | ラウンドm。 |
| 8 | TRUNC(m (、unit)) | mを切り捨てます。 |
タイムスタンプのPLSQL関数
ここで、mにはタイムスタンプの値が含まれます。
配列javaの内容を出力する方法
| Sl No. | 名前 | 目的 |
|---|---|---|
| 7 | TO_TIMESTAMP_TZ(m、(フォーマット)) | 文字列mをTIMESTAMPWITHTIMEZONEに変換します。 |
| 1 | CURRENT_TIMESTAMP() | 現在のセッションとセッションタイムゾーンを持つTIMESTAMPWITHTIMEZONEを取得します。 |
| 二 | FROM_TZ(m、time_zone) | m TIMESTAMPを変換し、time_zoneをTIMESTAMP WITHTIMEZONEに言及します。 |
| 3 | LOCALTIMESTAMP() | セッションタイムゾーンに現地時間を含むTIMESTAMPを取得します。 |
| 4 | SYSTEMTIMESTAMP() | 現在のデータベース時間とデータベースタイムゾーンを持つTIMESTAMPWITHTIMEZONEを取得します。 |
| 5 | SYS_EXTRACT_UTC(m) | m TIMESTAMP WITH TIMEZONEを、UTCで日付と時刻を持つTIMESTAMPに変換します。 |
| 6 | TO_TIMESTAMP(m、(フォーマット)) | 文字列mをTIMESTAMPに変換します。 |
日時関数とタイムスタンプ関数を使用したコードの実装:
BEGIN /* get the current date and time */ DBMS_OUTPUT.put_line ('The output of SYSDATE is:'|| SYSDATE); /* get the TIMESTAMP WITH TIME ZONE with database time and time zone */ DBMS_OUTPUT.put_line ('The output of SYSTIMESTAMP is:' ||SYSTIMESTAMP); /* get the TIMESTAMP with local time in session time zone */ DBMS_OUTPUT.put_line ('The output of LOCALTIMESTAMP:' ||LOCALTIMESTAMP); /*get the TIMESTAMP WITH TIME ZONE with present session time with session time zone */ DBMS_OUTPUT.put_line ('The output of CURRENT_TIMESTAMP:'||CURRENT_TIMESTAMP); /*convert string to TIMESTAMP*/ DBMS_OUTPUT.put_line ('The output of TIMESTAMP:'||TO_TIMESTAMP('12-JAN-2011')); /*to add months*/ DBMS_OUTPUT.put_line ('The output of ADD_MONTHS:'||ADD_MONTHS(SYSDATE,1)); /*to get date and time of following day*/ DBMS_OUTPUT.put_line ('The output of NEXT_DAY:'||NEXT_DAY(SYSDATE,'MONDAY')); /*to truncate date */ DBMS_OUTPUT.put_line ('The output of TRUNC:'||TRUNC(SYSDATE)); /*to get the last day of month */ DBMS_OUTPUT.put_line ('The output of LAST_DAY:'||LAST_DAY (SYSDATE)); END; / 上記のコードの出力:

間隔内のPLSQL関数
| Sl No. | 名前 | 目的 |
|---|---|---|
| 1 | NUMTODSINTERVAL(m、間隔) | 数値mをINTERVALDAY TOSECONDに変換します。 |
| 二 | NUMTOYMINTERVAL(m、間隔) | 数値mをINTERVALYEAR TOMONTHに変換します。 |
| 3 | TO_DSINTERVAL(m) | 文字列mをINTERVALDAY TOSECONDに変換します。 |
| 4 | TO_YMINTERVAL(m) | 文字列mをINTERVALYEAR TOMONTHに変換します。 |
日時と間隔での算術演算
PL / SQLを使用すると、DateTime式とinterval式を作成できます。
適用できる演算子のリストは次のとおりです。
- 最初のオペランドがDateTimeで、2番目のオペランドが間隔であり、それらに(+)演算子を適用する場合、結果の値はDateTime型になります。
- 最初のオペランドがDateTimeで、2番目のオペランドが間隔であり、それらに(-)演算子を適用する場合、結果の値はDateTime型になります。
- 最初のオペランドがintervalで、2番目のオペランドがDateTimeであり、それらに(+)演算子を適用する場合、結果の値はDateTime型になります。
- 最初のオペランドがDateTimeで、2番目のオペランドがDateTimeであり、それらに(-)演算子を適用する場合、結果の値は間隔タイプになります。
- 最初のオペランドがintervalで、2番目のオペランドがintervalであり、それらに(+)演算子を適用する場合、結果の値はintervalタイプになります。
- 最初のオペランドがintervalで、2番目のオペランドがintervalであり、それらに(-)演算子を適用する場合、結果の値はintervalタイプになります。
- 最初のオペランドがintervalで、2番目のオペランドが数値であり、それらに(*)演算子を適用する場合、結果の値はintervalタイプになります。
- 第1オペランドが数値で、第2オペランドが間隔であり、それらに(*)演算子を適用する場合、結果値は間隔タイプになります。
- 最初のオペランドがintervalで、2番目のオペランドが数値であり、それらに(/)演算子を適用する場合、結果の値はintervalタイプになります。
DatetimeとIntervalでいくつかの算術演算を使用したコード実装。
DECLARE c_dt TIMESTAMP; r_dt TIMESTAMP; s_dt TIMESTAMP; BEGIN c_dt := SYSTIMESTAMP; r_dt:= c_dt + TO_DSINTERVAL ('1600 5:20:1'); DBMS_OUTPUT.PUT_LINE ('Addition of datetime and Interval:' ||r_dt); s_dt:= c_dt - TO_DSINTERVAL ('1600 5:20:1'); DBMS_OUTPUT.PUT_LINE ('Subtraction of datetime and Interval:' || s_dt); END; 上記のコードの出力:

上記のコードの説明:
- コードでは、(「1600 5:20:1」)は1600日、5時間、20分、1秒を意味します 。
- 最初の出力では、最初のオペランドはDateTimeであり、2番目のオペランドは間隔です。それらを追加すると、午前の時刻で12月24日として日付が取得されました。
- 2番目の出力では、最初のオペランドはDateTimeで、2番目のオペランドは間隔です。 2番目から1番目を引くと、PMの時間で20-MARの日付が得られました。
よくある質問と回答
Q#1)現在のタイムスタンプは何ですか?
回答: 現在のタイムスタンプまたはCURRENT_TIMESTAMPは、サーバーでSQLステートメントを実行している間の時刻の読み取りに依存するタイムスタンプを記述します。
Q#2)SysdateはOracleで何を返しますか?
回答: Sysdate()関数は、データベースが配置されているオペレーティングシステムで構成されている現在の日付と時刻をフェッチします。返される値のデータ型はDATEです。
Q#3)現在のシステムの日付と時刻を与えるPL / SQL関数はどれですか?
回答: 現在のシステムの日付と時刻を与えるPL / SQL関数はSYSDATE()です。
Q#4)DUAL SQLとは何ですか?
回答: DUALは、データディクショナリとともにデフォルトでOracleによって作成されるデータベーステーブルです。 1つの行と1つの列が含まれています。 DUALはSYSが所有していますが、すべてのユーザーが使用できます。
Q#5)PL SQLで日付変数をどのように宣言しますか?
回答: 以下の構文を使用して、PL / SQLで日付変数を宣言できます。
DECLARE stdt DATE := to_date ('06/06/2006', 'DD/MM/YYYY');Q#6)Oracleの日付形式は何ですか?
回答: Oracleの入出力の標準日付形式は、「DD / MON / YY」です。これは、パラメーターNLS_DATE_FORMATの値によって構成されます。
結論
このPLSQL日時形式のチュートリアルでは、プログラミングで使用するために不可欠なPL / SQL日時のいくつかの基本概念について詳しく説明しました。
以下のトピックについて説明しました。
- 日時。
- 日時、タイムスタンプ、および間隔の周りの関数。
- 日時と間隔の算術演算。
- 日時と間隔のフィールド値。