データベース:オラクル
簡易版:
テーブルTには次の列があります: D ( DATE タイプ)
今、テーブルは空です。
INSERT INTO T
(D) VALUES (sysdate);
これで、テーブルには 22-AUG-14 を含む 1 つの行ができました。
次の WHERE 句がfalseなのはなぜですか?
SELECT * FROM T
WHERE D = sysdate;
=> 0 行
次のクエリが機能します。
SELECT * FROM T
WHERE TO_CHAR(D, 'DD/MM/YYYY') = TO_CHAR(sysdate, 'DD/MM/YYYY');
=> 1行
時間に関連する「精度の低下」があると思いますが (double と int に似ています)、なぜそれが可能なのでしょうか? 両方のタイプが DATE であるためです。
- sysdate は、 http: //docs.oracle.com/cd/B19306_01/server.102/b14200/functions172.htm に従って DATE を返します。