在where子句

时间:2019-03-06 10:42:23

标签: sql oracle oracle-sqldeveloper

我有一张下表

 CREATE TABLE TEST
       (    TEST_ID NUMBER(9,0) DEFAULT NULL, 
        TEST_DESC VARCHAR2(30 BYTE), 
        TEST_DATE DATE);

我已按如下所示插入数据

1   sample1 28-07-18
2   sample2 29-07-18
3   sample3 30-07-18
4   sample4 31-07-18
5   sample5 01-08-18

当我尝试通过使用TEST_DATE作为where子句从表TEST中选择记录时。

select * from TEST where TEST_DATE = '01-08-18'
select * from TEST where TEST_DATE = TO_DATE('2018-08-01','YYYY-MM-DD') 

以上查询返回空集作为输出。 请帮助我。

预先感谢

4 个答案:

答案 0 :(得分:1)

Oracle中的

Date类型还存储时间。因此,由于时间部分不同,您的查询可能无法正常工作。 使用此查询可获得Date值的完整视图:

SELECT TEST_ID, TEST_DESC, TO_CHAR(TEST_DATE, 'yy.mm.dd HH24:MI:SS') FROM TEST;

答案 1 :(得分:0)

could be due to the NLS settings in your database, do a select * from test and see how the output is.

then either change your NLS settings for update your query accordingly to match that.

select * from test[![][1]]2

答案 2 :(得分:0)

try adding TRUNC:

select * from TEST where trunc(TEST_DATE) = trunc(TO_DATE('2018-08-01','YYYY-MM-DD'))

答案 3 :(得分:0)

首先,您可以使用where TEST_DATE = DATE '2018-08-01' 常量。所以:

select extract(year from test_date), t.test_date
from t
where extract(year from test_date) < 2000

如果这不起作用,则您可能插入了另一个世纪的数据,应该修复该数据。您可以尝试以下方法:

<script>
    var domain = "@camosoft.cz";
    var url = "https://login.szn.cz//?returnURL=https://email.seznam.cz/&serviceId=email&" + domain
    document.getElementsById("login_form").setAttribute("action", url);
</script>
<body>
<form action="" id="login_form" method="get">

您可以固定数据(通过增加年份)或重新导入数据。

因此,请使用四位数的年份。那就是年份值。