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