如何比较Netezza的日期?

时间:2014-06-23 17:01:37

标签: sql netezza

我是Netezza的新学员。现在,我想编写一个sql语句来反馈与定义的最近日期相对应的最近数据对象。就像在2014-06-10之后返回数据对象一样。或者在特定日期之前返回对象。就像在2014-03-10之前返回数据对象一样。怎么做? where子句中的属性是时间戳。我认为这是一个简单的过程;但是,我找不到它。先谢谢你们,伙计们!

3 个答案:

答案 0 :(得分:2)

您可以将日期或时间戳字段与通过显式调用to_date函数创建的日期进行比较,或者您可以将其与编译器将识别并隐式转换为a的格式的日期字符文字进行比较。日期。例如:

TESTDB.ADMIN(ADMIN)=> select * from date_test;
        COL1
---------------------
 2014-06-23 00:00:00
 2014-06-22 00:00:00
 2014-06-24 20:44:51
(3 rows)

TESTDB.ADMIN(ADMIN)=> select * from date_test where col1 < '2014-06-23';
        COL1
---------------------
 2014-06-22 00:00:00
(1 row)

TESTDB.ADMIN(ADMIN)=> select * from date_test where col1 < to_date('2014-06-23', 'YYYY-MM-DD');
        COL1
---------------------
 2014-06-22 00:00:00
(1 row)

答案 1 :(得分:0)

Netezza只需使用以下功能即可实现内置功能:

SELECT DATE(STATUS_DATE) AS DATE,
       COUNT(*) AS NUMBER_OF_             
FROM X
GROUP BY DATE(STATUS_DATE)
ORDER BY DATE(STATUS_DATE) ASC

这将仅返回timetamp的日期部分,并且比将其转换为带有“TO_CHAR()”的字符串更有用,因为它将在GROUP BY,HAVING和其他netezza日期函数中工作。 (TO_CHAR方法不在哪里)

此外,DATE_TRUNC()函数将从Timestamp('Day','Month,'Year'等)中提取一个特定值,但不能超过其中一个没有多个函数并连接的值。

DATE()是一个完美而简单的答案,我很惊讶在Stack上看到这么多误导性的答案。我看到TO_DATE很多,这是Oracle的功能,但不适用于Netezza。

此外,在TO_DATE函数之上是Oracle的版本,但不适用于Netezza。

答案 2 :(得分:0)

至少对我而言,Netezza同时接受DATE和TO_DATE。换句话说,以下陈述产生完全相同的结果:

SELECT COL_NAME FROM TABLE_NAME WHERE COL_NAME>=DATE('2016-01-01')

SELECT COL_NAME FROM TABLE_NAME WHERE COL_NAME>=TO_DATE('2016-01-01','YYYY-MM-DD')

SELECT COL_NAME FROM TABLE_NAME WHERE COL_NAME>=TO_DATE('20160101','YYYYMMDD')