時間差異(月):
select (date '2003-08-15' - date '2003-01-01') month;
時間差異(天):
select date '2003-08-15' - date '2003-01-01'; [@more@]
時間差異(秒):
select ((time02 / 10000) * 3600 + (time02 / 100 MOD 100) * 60 + (time02 MOD 100)) - ((time01 / 10000) * 3600 + (time01 / 100 MOD 100) * 60 + (time01 MOD 100)) as time_diff
月份操作:
select add_months(current_date, 3);
ADD_MONTHS(Date, -2)
add_months(date '2002-01-31', 1);
本月第一天:
select date - extract(day from date) + 1
上月最后一天:
select date '2008-03-03' - extract(day from '2008-03-03')
decemal轉成time:
select cast(cast(cast(TimeFld as format '99:99:99.99') as char(11)) as time(6)) from DBC.EventLog
依照當前時間得到timestamp:
select cast(current_date as timestamp(2)) + ((current_time - time '00:00:00') hour to second);
上個星期五:
select *
from sys_calendar.calendar
where day_of_week = 6 --星期五
and calendar_date between date -6 and date; --上個星期
上周的今天:
select * from sys_calendar.calendar where calendar_date = date-7
日期存儲
日期使用以下公式在內部存儲為整數。
((YEAR - 1900) * 10000) + (MONTH * 100) + DAY
您可以使用以下查詢來檢查日期的存儲方式。
SELECT CAST(CURRENT_DATE AS INTEGER);
由於日期存儲為整數,您可以對它們執行一些算術運算。 Teradata提供執行這些操作的函數。
提取
EXTRACT函數從DATE值提取日,月和年的部分。 此功能還用於從TIME / TIMESTAMP值提取小時,分鍾和秒。例
以下示例顯示如何從日期和時間戳值提取年,月,日期,小時,分鍾和秒值。SELECT EXTRACT(YEAR FROM CURRENT_DATE);
EXTRACT(YEAR FROM Date) ----------------------- 2016 SELECT EXTRACT(MONTH FROM CURRENT_DATE); EXTRACT(MONTH FROM Date) ------------------------ 1 SELECT EXTRACT(DAY FROM CURRENT_DATE); EXTRACT(DAY FROM Date) ------------------------ 1 SELECT EXTRACT(HOUR FROM CURRENT_TIMESTAMP); EXTRACT(HOUR FROM Current TimeStamp(6)) --------------------------------------- 4 SELECT EXTRACT(MINUTE FROM CURRENT_TIMESTAMP); EXTRACT(MINUTE FROM Current TimeStamp(6)) ----------------------------------------- 54 SELECT EXTRACT(SECOND FROM CURRENT_TIMESTAMP); EXTRACT(SECOND FROM Current TimeStamp(6)) ----------------------------------------- 27.140000
間隔
Teradata提供INTERVAL函數以對DATE和TIME值執行算術運算。 有兩種類型的INTERVAL函數。年 - 月間隔
- YEAR
- YEAR TO MONTH
- MONTH
日間隔
- DAY
- DAY TO HOUR
- DAY TO MINUTE
- DAY TO SECOND
- HOUR
- HOUR TO MINUTE
- HOUR TO SECOND
- MINUTE
- MINUTE TO SECOND
- SECOND
例子
以下示例將3年添加到當前日期。
SELECT CURRENT_DATE, CURRENT_DATE + INTERVAL '03' YEAR; Date (Date+ 3) -------- --------- 16/01/01 19/01/01
以下示例將3年和01個月添加到當前日期。
SELECT CURRENT_DATE, CURRENT_DATE + INTERVAL '03-01' YEAR TO MONTH; Date (Date+ 3-01) -------- ------------ 16/01/01 19/02/01
以下示例將01天,05小時和10分鍾添加到當前時間戳。
SELECT CURRENT_TIMESTAMP,CURRENT_TIMESTAMP + INTERVAL '01 05:10' DAY TO MINUTE; Current TimeStamp(6) (Current TimeStamp(6)+ 1 05:10) -------------------------------- -------------------------------- 2016-01-01 04:57:26.360000+00:00 2016-01-02 10:07:26.360000+00:00
實戰一: 將整數型轉換為日期格式或時間格式
select REPORT_DATE, Cast(Trim(REPORT_DATE) AS DATE Format 'YYYYMMDD'), CAST((CAST(REPORT_DATE AS DATE FORMAT 'YYYYMMDD')(format 'yyyy-mm-dd')(char(10)))|| ' 00:00:00' as timestamp(0)) from
運行結果:
實戰二:將時間轉換成日期
SELECT T1.DT_FWD, CAST(CAST((T1.DT_FWD (FORMAT 'YYYYMMDD')) AS VARCHAR(26)) AS TIMESTAMP FORMAT'YYYYMMDD') AS DT_VIEW_D, CAST(CAST((T1.DT_FWD (FORMAT 'YYYYMMDDHH')) AS VARCHAR(26)) AS TIMESTAMP FORMAT'YYYYMMDDHH') AS DT_VIEW_H, CAST(CAST((T1.DT_FWD (FORMAT 'YYYYMMDDHHMI')) AS VARCHAR(26)) AS TIMESTAMP FORMAT'YYYYMMDDHHMI') AS DT_VIEW_HM FROM xxx T1
運行結果:
實戰三:將年月轉為年月日
CAST(CAST(CAST(MONTH_ID AS INTEGER)||'01' AS VARCHAR(20)) AS DATE FORMAT 'YYYYMMDD') MONTHID_DATE,