我正在进行一些计算,但是由于我的日期字段显示的是时间戳,我只想在进行计算时使用日期。如何忽略分钟并在进行计算时仅使用日期?这是我的代码:
SELECT EF.DSCH_TS,
CASE WHEN EXTRACT (DAY FROM EF.DSCH_TS - EF.ADMT_TS)>=0 THEN 'GroupA' END AS CAL
FROM MainTable EF;
SELECT DATE(STATUS_DATE) AS DATE,
COUNT(*) AS NUMBER_OF_
FROM X
GROUP BY DATE(STATUS_DATE)
ORDER BY DATE(STATUS_DATE) ASC
TO_CHAR()
将其转换为字符串更有用,因为它将在GROUP BY
、HAVING
和其他Netezza日期函数中工作(而TO_CHAR
方法不会)。DATE_TRUNC()
函数将从时间戳中提取特定值(“天”、“月”、“年”等),但不能超过一个值,除非使用多个函数并进行串联。
DATE()
是这个问题的完美简单答案,我很惊讶在Stack上看到这么多误导性的答案。我经常看到TO_DATE
,这是Oracle的函数,但在Netezza
上无法使用。SELECT EF.DSCH_TS,
CASE
WHEN EXTRACT (DAY FROM (DATE(EF.DSCH_TS) - DATE(EF.ADMT_TS)))>=0 THEN 'GroupA'
END AS CAL
FROM MainTable EF;
SELECT EF.DSCH_TS,
CASE
WHEN age(date(EF.DSCH_TS),date(EF.ADMT_TS))>= interval '6 days'
THEN 'GroupA' END AS CAL
FROM MainTable EF;
使用 date_trunc()
函数,第一个参数为 'day'
。我认为这就是你想要的:
SELECT EF.DSCH_TS,
(case when date_trunc('day', EF.DSCH_TS) >= date_trunc('day', EF.ADMT_TS) THEN 'GroupA' END) AS CAL
FROM MainTable EF;
date_trunc()
调用放在 extract(day from . . .)
中。 - Gordon Linoff