PL/SQLでのDATE型の取扱いについて教えてください。
初期化パラメータNLS_DATE_FORMATが'YY-MM-DD'で、
ある列を'YYYY/MM/DD HH24:MI:SS'形式でDBにINSERTしたい場合、
dtWorkEndDate := to_date(charWorkEndDate, 'YYYY/MM/DD HH24:MI:SS');
としてINSERTにdtWorkEndDateを用いると、
YY-MM-DD形式でDBに登録されてしまいます。
(dtWorkEndDateはDATE型。)
ORACLEの設定かPL/SQLの問題なのかわからないのですが、
なにかアドバイスを頂けないでしょうか。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
q=2142210 No.3でも指摘されてますが、
execute immediate文を使ってるのが、悪さしてるのでは。
dtWorkEndDate := to_date(charWorkEndDate, 'YYYY/MM/DD HH24:MI:SS');
INSERT INTO テーブル名 VALUES ( dtWorkEndDate );
――みたいに、単純な書き方で済むはずですが。
この回答への補足
やはりexecute immediateの中でシングルクォートを
用いていたのが良くなかったようです。
INSERT INTO テーブル名 VALUES to_date(charWorkEndDate, 'YYYY/MM/DD HH24:MI:SS')
とし、to_dateを文字列で渡してやることにより
問題解決致しました。
ありがとうございました。
No.1
- 回答日時:
DBにどんな形式で日付が格納されているかを
どのように確認していますか?
例えば CREATE TABLE worktable (end_date date);
というテーブルなら
SQL*Plusで
SQL> SELECT * from worktable;
としただけではNLS_DATE_FORMATが効いてしまうので
SQL> SELECT to_char(end_date, 'yyyy/mm/dd hh24:mi:ss') from worktable;
とするか
SQL> alter session set nls_date_format='yyyy/mm/dd hh24:mi:ss');
SQL> SELECT end_date from worktable;
とする必要がありますね。
回答ありがとうございます。
今まではデータをSI Object Browserで確認していたのですが、
OracleのEnterprise Managerで確認したところ、
時刻もINSERTされていました。
データ確認の際にNLS_DATE_FORMATが影響することに
気付きませんでした。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL SQLについて質問です。 SELECT TO_CHAR(TO_DATE('90-10-08.'YY- 4 2022/05/13 20:55
- Access(アクセス) エクセルのVBAについて教えてください。 4 2023/01/21 10:21
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 09:24
- Excel(エクセル) エクセルの数式で教えてください。 2 2022/12/23 14:57
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/01/23 17:13
- MySQL ある時間以内の利用者の抽出について 3 2022/03/26 11:15
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
- JavaScript gasについて 1 2022/05/31 21:51
- Access(アクセス) Accessのデータ型の日付/時刻型について 1 2023/04/02 17:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のカテゴリを選択した上でL...
-
UNIXの時間はどう変更すれ...
-
SQLローダーCSV取込で、囲み文...
-
テーブルの最後(最新)のレコー...
-
【PL/SQL】FROM区に変数を使う方法
-
並べ替えについて
-
select文の実行結果に空白行を...
-
ファイルの漢数字の順番につい...
-
SQLで条件にヒットしたレコード...
-
group byの並び順を変えるだけ...
-
PL/SQLでフェッチでNULLの項目...
-
count関数の値をwhere句で使用...
-
where句中のtrim関数について
-
AccessのSQL文で1件のみヒット...
-
データ
-
日付検索で0001-01-01 00:00:00...
-
SQLで曜日のソートを月火水木金...
-
レコードの登録順がおかしい
-
ACCESSのクエリで空白以降を別...
-
単一グループのグループ関数で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
postgresのカレンダーについて
-
PHP+MySQLで月ごとの数量を表...
-
【PL/SQL】DATE型の時刻の表示...
-
配列の重複を削除後、削除分の...
-
掲載日と更新日の管理の仕方
-
続・指定した時間にPHPプログラ...
-
MySQLのUPDATE文でサブクエリ
-
EXCELマクロのSQL文での引用符...
-
DB登録に関する日付の認識
-
日替わりメッセージを表示させ...
-
構造体のプログラミング......
-
JOINを使った文で、date > now();
-
preg_replace, ereg_replace
-
PHPでMySQL内のデータの合計値...
-
JavaScriptの条件文の応用
-
UNIXの時間はどう変更すれ...
-
MySQL + PHP 同じテーブル内で...
-
複数のカテゴリを選択した上でL...
-
Prologの現在時間の取得
-
PHPとMysqlを使用した集計表の...
おすすめ情報