[解決済み] Oracle の Date データ型が SQL によって 'YYYY-MM-DD HH24:MI:SS TMZ' に変換される。
2022-02-15 16:57:30
質問事項
Oracle Dataのデータ型カラムにアップロードするアプリケーションを経由しています。
TO_TIMESTAMP_TZ('2012-10-09 1:10:21 CST','YYYY-MM-DD HH24:MI:SS TZR')
このDataカラムから、以下のフォーマットとタイムゾーンを取り出す必要があります。 'yyyy-mm-dd hh24:mi:ss cdt' です。
注:日付はCSTでアップロードされていますが、CDTで返される必要があります。
ググってみましたが、Dateデータ型については、以下のものしか見つかりませんでした。
SELECT dateColumn From dateTable;
09-NOV-12
SELECT TO_CHAR(dateColumn,'YYYY-MM-DD HH24:MI:SS') From dateTable;
2012-10-09 1:10:21
以下も試してみました。
TO_TIMESTAMP_TZ(dateColumn,'YYYY-MM-DD HH24:MI:SS CDT')
data format not recognized
TO_TIMESTAMP_TZ(CRTE_DT,'YYYY-MM-DD HH24:MI:SS TZH:TZM')
09-NOV-12 1:10:21 AM +01:00
don't understand why this does not come back as YYYY-MM-DD?
どうすればこの問題を解決できますか?
どのように解決するのですか?
ご質問の中に少し混乱があります。
-
a
Date
データ型は、タイムゾーンのコンポーネントを保存しません。を挿入すると、この情報は切り捨てられ、永遠に失われてしまいます。TIMESTAMP WITH TIME ZONE
の中にDate
. -
日付を画面上に表示したり、文字API(XML、ファイル...)を介して他のシステムに送信したりする場合、以下のように使用します。
TO_CHAR
という関数があります。オラクルでは aDate
には書式がありません。 : それはある時点のものです。 -
逆に、次のように使用します。
TO_TIMESTAMP_TZ
を変換するためにVARCHAR2
をTIMESTAMP
しかし、これではDate
をTIMESTAMP
. -
使用するのは
FROM_TZ
にタイムゾーン情報を追加する。TIMESTAMP
(またはDate
). -
オラクルでは
CST
はタイムゾーンですがCDT
がない。CDT
はデイライトセービング情報です。 -
さらにややこしいことに
CST/CDT
(-05:00
) とCST/CST
(-06:00
) は明らかに異なる値を持ちますが、タイムゾーンCST
は、デフォルトで日付に応じたサマータイム情報を継承します。
そのため、変換は見た目ほど単純ではないかもしれません。
を変換すると仮定すると
Date
d
タイムゾーンで有効であることが分かっている
CST/CST
をタイムゾーンで同等の
CST/CDT
を使用することになります。
SQL> SELECT from_tz(d, '-06:00') initial_ts,
2 from_tz(d, '-06:00') at time zone ('-05:00') converted_ts
3 FROM (SELECT cast(to_date('2012-10-09 01:10:21',
4 'yyyy-mm-dd hh24:mi:ss') as timestamp) d
5 FROM dual);
INITIAL_TS CONVERTED_TS
------------------------------- -------------------------------
09/10/12 01:10:21,000000 -06:00 09/10/12 02:10:21,000000 -05:00
ここでは、私のデフォルトのタイムスタンプのフォーマットが使用されています。明示的にフォーマットを指定することもできますね。
SQL> SELECT to_char(from_tz(d, '-06:00'),'yyyy-mm-dd hh24:mi:ss TZR') initial_ts,
2 to_char(from_tz(d, '-06:00') at time zone ('-05:00'),
3 'yyyy-mm-dd hh24:mi:ss TZR') converted_ts
4 FROM (SELECT cast(to_date('2012-10-09 01:10:21',
5 'yyyy-mm-dd hh24:mi:ss') as timestamp) d
6 FROM dual);
INITIAL_TS CONVERTED_TS
------------------------------- -------------------------------
2012-10-09 01:10:21 -06:00 2012-10-09 02:10:21 -05:00
関連
-
[解決済み】SQL ServerでIdentityカラムを更新する方法は?
-
[解決済み] INSERT ステートメントが FOREIGN KEY 制約と競合する - SQL Server
-
[解決済み] SQLクエリ「00904. 00000 - "%s: 無効な識別子".
-
[解決済み] Varchar は Sum 演算子では無効です。
-
[解決済み] SELECT DISTINCTを指定した場合、ORDER BY項目は必ず選択リストに表示されます。
-
[解決済み] SQLクエリで2つの列から値を引き算する
-
[解決済み] オペランド型の衝突:uniqueidentifierはintと互換性がない
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] シェルスクリプトでYYYY-MM-DD形式の日付にする
-
[解決済み] JavaScript の日付を yyyy-mm-dd でフォーマットする。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「パラメータ@objnameがあいまいか、主張する@objtype(COLUMN)が間違っています」を解決するにはどうすればよいですか?[重複している]。
-
[解決済み】''付近の構文が正しくない
-
[解決済み】SQLクエリ「00904. 00000 - "%s: 無効な識別子"
-
[解決済み】Athena: スケールファクターでリソースを使い果たすクエリ
-
[解決済み】SQL Server: 無効なカラム名
-
[解決済み】sys.dm_exec_sql_textはどのように機能するのでしょうか?
-
[解決済み] WHERE x IN (5) vs WHERE x = 5 ...なぜINを使うのか?
-
[解決済み] DELETE文の競合REFERENCE制約
-
[解決済み] Presto SQL ピボッティング(言葉は悪いですが)データ
-
[解決済み] nvarchar 値 ... をデータ型 int に変換する際に、変換に失敗しました。