2013-04-03 9 views
6

oracle 10gを使用してdd/mm/yyyyにシステム日付を挿入する方法はありますか?oracleにシステム日付を挿入する

次のクエリを使用している間、システム日付を03/04/0013として挿入します。私は03/04/2013が必要です。この問題を解決するのに手伝ってもらえますか?

insert into GtTable 
values('111','Name',300,'Tour',to_date('02/04/2012','DD/MM/YYYY'),to_date(sysdate,'DD/MM/YYYY')); 

ただし、'02/04/2012 'を直接挿入すると'02/04/2012'と同じように受け付けます。

+0

本当に機能していますか? '' 22/04/2012''のようなものを試しましたか? 'nls_date_format'とは何ですか? – hofmeister

答えて

4

あなたのインサート上の最後のフィールドが日付型のフィールドである場合は、SYSDATE上の任意の変換を必要としないはずなので、以下はOKのようになります。

insert into GtTable 
values('111', 'Name', 300, 'Tour', to_date('02/04/2012','DD/MM/YYYY'), sysdate); 

しかし、それはvarchar型のフィールドの場合、動作するはずです以下:あなたがを実行するときは、

sysdateはすでに日付である日付にTO_DATEを活性化させるべきではありません

insert into GtTable 
values('111', 'Name', 300, 'Tour', to_date('02/04/2012','DD/MM/YYYY'), to_char(sysdate, 'dd/mm/yyyy')); 
+0

現在の日付を挿入するのに使用しようとしましたが、日付形式が認識されませんでしたto_date(SYSDATE、 'DD-MMM-YYYY') –

+0

@MRANDあなたが得ている問題は** ABCade * *上の[このコメント](https://stackoverflow.com/a/15779452/2156229) – warantesbr

12

最初のパラメータとしてを使用すると、暗黙的に、NLS_DATE_FORMATに従った文字列に変換されます。この場合、YYYYではなくYYが含まれている可能性があります。

オラクルの日付は、日付と時刻を表す数値で、それはあなたが時間値なしでSYSDATEを挿入したい場合は、このようにそれを切り捨てる必要があり、「フォーマット」を持っていません。

insert into GtTable 
values('111','Name',300,'Tour',to_date('02/04/2012','DD/MM/YYYY'),trunc(sysdate)) 
+0

[ここ](http://www.sqlfiddle.com/#!4/d41d8/9426)はsqlfiddleの例です –

0

TOYCHAR(SYSDATE、 'DD/MM/YYYY')システム日付をDD/MM/YYYYとして挿入できますが、それはもはや日付型ではありません。

+1

データ型が 'DATE'の場合、oracleはnls_date_formatに従って日付に暗黙的に文字列を変換し、' to_char'関数が正しく機能するにもかかわらず、挿入が失敗するため、これは良い考えではないと思います... [Here](http://www.sqlfiddle.com/#!4/d41d8/9430)を参照してください –

+0

年、あなたは正しいです。単にdd/mm/yyyyとして表示する場合は、to_charが機能します。挿入するだけで、この列がデータ型の場合、挿入は失敗します。あなたは元に戻すことができますが、これは少しばかげています:) – Gentlezerg

関連する問題