我正在做一些計算,但我的計算已關閉,因爲我的日期字段顯示時間戳,而我只想在我進行計算時僅使用日期。我怎麼能忽略這些會議記錄,並在計算時只使用日期?這裏是我有:如何使用Netezza將日期時間轉換爲日期
SELECT EF.DSCH_TS,
CASE WHEN EXTRACT (DAY FROM EF.DSCH_TS - EF.ADMT_TS)>=0 THEN 'GroupA' END AS CAL
FROM MainTable EF;
我正在做一些計算,但我的計算已關閉,因爲我的日期字段顯示時間戳,而我只想在我進行計算時僅使用日期。我怎麼能忽略這些會議記錄,並在計算時只使用日期?這裏是我有:如何使用Netezza將日期時間轉換爲日期
SELECT EF.DSCH_TS,
CASE WHEN EXTRACT (DAY FROM EF.DSCH_TS - EF.ADMT_TS)>=0 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;
你可能想考慮重寫你的case語句返回interval。這將允許更多的靈活性。
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;
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()
功能將拉動一個特定的值了時間戳的(「日」,「月,‘年’,等等。),但這些不不超過一多個功能和連接。
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;
@moe這應該被標記爲問題的答案。將時間戳投射到日期會刪除該字段的所有時間詳細信息,這正是問題標題所期望的。 – dlamblin
我得到錯誤:函數「DATE_TRUNC(TIMESTAMP) '不存在 – moe
@moe。 。 。我從第二個電話中離開了第一個論點。 –
謝謝戈登,這工作,但我有點困惑這個功能。我如何修改,如果我想我的情況是這樣的:其中EF.DSCH_TS> 6?因爲我想測試天數是否大於0或1,2,3等,所以我有很多案例陳述,我沒有在這裏展示。感謝澄清... – moe