
オラクルでsysdateをとろうとすると、現在わたしの使っている実装ではselect sysdate from DUALに対し、例えば
2006/03/24 18:13:42 が
返されます。
しかしsysdateを関数の中で使うと最初の"20"と時分秒がなくなり、06-03-24のような値が返されます。例えば以下のようなSQLにおいてです。
select translate(sysdate,'1234567890-','1234567890-') from DUAL;
select substr(sysdate,1) from DUAL;
sysdateのフォーマットが、使い方によって変わるのはなぜなのでしょうか。
No.2ベストアンサー
- 回答日時:
>select translate(sysdate,'1234567890-','1234567890-') from DUAL;
>select substr(sysdate,1) from DUAL;
これらのSQLでのSYSDATEは、関数のパラメータになっていますが、
関数は、VARCHAR2/CHAR属性のパラメータを想定しています。
なので、オラクルは、暗黙に"TO_CHAR(SYSDAE)"を実行しています。
で、TO_CHARでの日付書式がデフォルト値になるので、NLSパラメータに
左右されて、yy-mm-ddな扱いになります。
今回のように、SQL文の中での日付書式に関しては、クライアントのNLSでなく
サーバサイドの環境によって決まるはずですので、そちらを確認してください。
出来ることなら、日付書式のデフォルトに左右されないよう明示的な型変換(TO_CHAR)を
使うのが好ましいと思います。
ありがとうございます。関数のパラメーターのデータ型から追求していけばよかったなあと思いました。
select to_char(sysdate) from DUAL; を実行して確認してみました。
どうしてもyyyy/mm/ddフォーマットでINSERTしなければならないデータだったので、to_char関数を使用後に、translateとconcatenateを使って対応することにしました。
No.1
- 回答日時:
クライアント側でNLS_DATE_FORMAT 環境変数を設定していませんか?
日付のフォーマットは接続クライアントの役割で
NLS_DATE_FORMATまたはNLS_TERRITORYによって変化します。
データベースサーバ自身も接続クライアントですから
デフォルトのNLS_DATE_FORMATを暗黙変換で使用します。
クライアントの NLS_DATE_FORMAT とサーバの NLS_DATE_FORMAT が異なっているからでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLで部分的にGROUP BYしたいとき
-
日付型なら変数の先頭になん...
-
Accessの数値から時間に変換す...
-
エクセル 日付による並べ替え...
-
テーブルの主キーをdate型...
-
週の開始日・終了日を求めるSQL
-
日数算出SQL
-
重複するIDのデータを1行にま...
-
SQLサーバで和暦から西暦に変換...
-
wordの差し込み印刷での日付表示
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
今日の日付が入った行のデータ...
-
SQL/Loaderでの年月日時分秒の...
-
SQLで今日の日付でWhereしたい
-
OracleのDATE型について
-
日付時刻+連番の主キーをSQLだ...
-
WHERE句にて「30日前から今日ま...
-
DB2のSQL(日付)について
-
OSのシステム日付を変更して...
-
最新日付のデータを取得したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessの数値から時間に変換す...
-
SQLで部分的にGROUP BYしたいとき
-
重複するIDのデータを1行にま...
-
今日の日付が入った行のデータ...
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
SQLサーバで和暦から西暦に変換...
-
oracle 文字列 01:45 を時間に...
-
テーブルの主キーをdate型...
-
日付書式に変換でこまっています!
-
日付型なら変数の先頭になん...
-
Excelグラフの日付軸の日付がず...
-
wordの差し込み印刷での日付表示
-
WHERE句にて「30日前から今日ま...
-
エクセル 日付による並べ替え...
-
SQL/Loaderでの年月日時分秒の...
-
DB2のSQL(日付)について
-
日付時刻+連番の主キーをSQLだ...
-
SQL ブレーク処理について
-
Exel関数で誕生日がきたら...
-
VBAについて
おすすめ情報