Oracleデータベースを使用しています。次のように日付フィールドのMIN
それは、日付フィールドにMIN
を適用することが可能である:
MIN(TO_DATE(Person.birthday, 'DD-Mon-YY'))
Oracleデータベースを使用しています。次のように日付フィールドのMIN
それは、日付フィールドにMIN
を適用することが可能である:
MIN(TO_DATE(Person.birthday, 'DD-Mon-YY'))
これは簡単な質問ですが、大きなキャッチがそれにあります。
MIN
の日付欄には適用できますか?
これは正しい方法ですか。MIN(TO_DATE(Person.birthday, 'DD-Mon-YY'))
?カラムがすでに DATE
タイプであればあなたはMIN(Person.birthday)
を使用する必要があります
TO_DATE
を使用しないでください。は、ここでの例だ理由 -
データ -
+-------+--------+-----------+------+-------------+------+------+--------+
| EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |
+-------+--------+-----------+------+-------------+------+------+--------+
| 7369 | SMITH | CLERK | 7902 | 17/Dec/1980 | 800 | | 20 |
| 7499 | ALLEN | SALESMAN | 7698 | 20/Feb/1981 | 1600 | 300 | 30 |
| 7521 | WARD | SALESMAN | 7698 | 22/Feb/1981 | 1250 | 500 | 30 |
+-------+--------+-----------+------+-------------+------+------+--------+
QUERY 1
select MIN(TO_DATE(hiredate, 'DD-Mon-YY')) from emp;
結果1
17/12/2080
QUERY 2
select MIN(hiredate) from emp;
結果2
17/12/1980
あなたは、あなたがしかし、QUERY 1にTO_DATE
機能を使用する場合世紀を台無しにされた結果を見ることができるようにQUERY 2で期待通りです。
場合必ずしも
TO_DATE
機能を使用する必要があり、私はお勧めし それは世紀 不一致の世話をするようあなたがDD-Mon-RR
の形式を使用します。 この形式は、年Y2K(Millenniumバグ)の問題がになったときに作成されました。しかし、私はまだそれをお勧めしません。
EDIT 1:
私はPerson.birthday
が有効な列名であるかどうかはわかりませんよ。誰かがこれについて私を啓発することはできますか?
'to_date()'の使い方は、無効なデータを返すと、エラーが発生する可能性があります。 NLS_DATE_FORMATは** DDではないため、MIN(TO_DATE(hd)、DD-Mon-YY))を使用すると、私のコンピュータ上では、* ORA-01843: MON-YY ' –
@a_horse_with_no_nameもっと同意できませんでした。 'TO_DATE'は' DATE'カラムのためのものではありません。文字列を日付に変換するために作成されました。 –
...から人
もちろん、あなたは単にそれを試してみませんか? – dnoeth
既に日付フィールドの場合は、単に「MIN(person.birthday)」を使用してください –
フィールドではなく列... – jarlh