こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Oracle to_dateのyyyy/mm/dd

to_dateを以下のように使用した場合、正確なdate値(2011年2月1日)を取得できるのでしょうか。

select to_date('2011/2/01','yyyy/mm/dd') from dual;

自分で検証できる環境が無い(コマンドが叩けない)ので質問させていただきました。
(できればoracle8i環境で分かると助かります。)

よろしくおねがいいたします。

投稿日時 - 2011-02-09 22:05:36

QNo.6510802

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

あぁ。。。すみません。
'True'と'False'の記載が反対、もしくは B - A の記載、でした。

投稿日時 - 2011-02-10 16:57:05

ANo.2

おはようございます。

>select date型(2011/01/31 00:00:00) < to_date('2011/2/01','yyyy/mm/dd') from dual
についてですがこのSQLは実行できません。
実際に流したSQLは下記の通り

==
select to_date('2011/01/31','yyyy/mm/dd') < to_date('2011/02/01','yyyy/mm/dd') from dual;

行1でエラーが発生しました。:
ORA-00923: FROMキーワードが指定の位置にありません。
==

条件を戻り値(結果)に入れられてもどうしたらいいか分からないといったところでしょうか。
SQLを考えるときにどういう答えが欲しいかを提示してあげないといけないかと思います。

たとえば・・・

SELECT
A,
B,
CASE WHEN A - B >= 0 THEN 'True'
WHEN A - B < 0 THEN 'False' END AS 判定
FROM
(
SELECT
TO_DATE('2011/01/31','yyyy/mm/dd') AS A,
TO_DATE('2011/02/01','yyyy/mm/dd') AS B
FROM
DUAL
)
;

A     B     判定
___________________
2011/01/31 2011/02/01 False

上記のような結果が返ってきます。
あまり上手なSQLの書き方ではないのですが回答になっていますでしょうか?

投稿日時 - 2011-02-10 09:48:27

ANo.1

可能です。
テーブル T ( dt date )
がある時
INSERT INTO T SELECT select to_date('2011/2/01','yyyy/mm/dd') from dual;
は正常終了し、フィールドには「2011/2/01 00:00:00,」が格納されます。

投稿日時 - 2011-02-10 00:51:06

お礼

ご教授ありがとうございました。
ちなみに、下記SQLでは真が返るのでしょうか。

select date型(2011/01/31 00:00:00) < to_date('2011/2/01','yyyy/mm/dd') from dual;

何分中途半端な知識で的外れな質問をしているかもしれませんが、ご回答頂けたら幸いです。
よろしくお願いいたします。

投稿日時 - 2011-02-10 08:30:26

あなたにオススメの質問