我有一些令人困惑的问题。
SQL> select login, status, date_modified from users where login = 'zack_661' and date_modified = '05-MAR-14';
no rows selected
SQL> select login, status, date_modified from users where login = 'zack_661' and date_modified = sysdate;
no rows selected
两个查询都没有结果,但如果我没有指定日期,则返回结果。
SQL> select login, status, date_modified from users where login = 'zack_661';
LOGIN STATUS DATE_MODI
-------------------------------------------------- ---------- ---------
zack_661 1 05-MAR-14
SQL> select sysdate from dual;
SYSDATE
---------
05-MAR-14
这是表架构。
SQL> desc users;
Name Null? Type
----------------------------------------- -------- ----------------------------
LOGIN NOT NULL VARCHAR2(50)
STATUS NUMBER
DATE_CREATED DATE
DATE_MODIFIED DATE
我也在尝试使用其他功能,但仍然没有结果
SQL> select login, status, date_modified from users where login = 'zack_661' and date_modified = to_date('05-MAR-14','DD-MON-YY');
no rows selected
SQL> select to_date('05-MAR-14','DD-MON-YY') from dual;
TO_DATE('
---------
05-MAR-14
提前感谢您的帮助。
感谢KevinKirkpatrick。我可以这样结束。
SQL> select login, status, date_modified from users where login = 'zack_661' and date_modified between TO_DATE('05-MAR-2014 00:00:00', 'DD-MON-YYYY HH24:MI:SS') and TO_DATE('05-MAR-2014 23:59:59', 'DD-MON-YYYY HH24:MI:SS');
LOGIN STATUS DATE_MODI
-------------------------------------------------- ---------- ---------
zack_661 1 05-MAR-14
对于其他任何人都非常感谢你的帮助。我真的很感激。我应该帮助别人,因为我是新来的。
答案 0 :(得分:3)
如果你不依赖时间,那么你可以试试这个
select login, status, date_modified from xdsl where login = 'zack_661' and trunc(date_modified)=to_date('05-MAR-14','DD-MON-YY');
答案 1 :(得分:1)
Oracle DATE存储到最近的秒。当您查询DATE_MODIFIED时,Oracle将使用您的NLS_date_format格式化日期。令人讨厌的是,此参数的默认设置不显示日期值的小时/分钟/秒部分。因此,默认情况下,看起来您的DATE值只是整个日期,即使它们不是。在你的情况下,DATE_MODIFIED几乎肯定不是'05 -MAR-2014'(实际上是3月5日凌晨12点)。希望以下示例更清楚:
SQL> CREATE TABLE EXAMPLE (DATE_MODIFIED DATE);
Table created.
SQL> INSERT INTO EXAMPLE VALUES (SYSDATE);
1 row created.
SQL> COLUMN DATE_MODIFIED FORMAT A20
SQL> SELECT * FROM EXAMPLE;
DATE_MODIFIED
--------------------
04-MAR-14
SQL> SELECT * FROM EXAMPLE WHERE DATE_MODIFIED = '04-MAR-14';
no rows selected
SQL> SELECT TO_CHAR(DATE_MODIFIED,'DD-MON-YYYY HH24:MI:SS') DATE_MODIFIED FROM EXAMPLE;
DATE_MODIFIED
--------------------
04-MAR-2014 21:40:45
SQL> SELECT * FROM EXAMPLE WHERE DATE_MODIFIED = TO_DATE('04-MAR-2014 21:40:45',
'DD-MON-YYYY HH24:MI:SS');
DATE_MODIFIED
--------------------
04-MAR-14
SQL> ALTER SESSION SET NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS';
Session altered.
SQL> SELECT * FROM EXAMPLE;
DATE_MODIFIED
--------------------
04-MAR-2014 21:40:45
SQL>
答案 2 :(得分:0)
可能会帮助你
select login, status, date_modified from xdsl where login = 'zack_661' and date_modified =to_date('05-MAR-14','DD-MON-YY');
答案 3 :(得分:0)
您可以使用此
where date_modified = to_date('31-DEC-95','DD-MON-YY')