Redshift 入门
Jason Myers
Principal Architect
SYSDATE 事务开始时的日期和时间-- 获取当前日期和时间
SELECT SYSDATE;
timestamp
============================
2024-01-27 20:05:55.976353
GETDATE() 语句开始时的日期和时间,需带括号-- 获取当前日期和时间
SELECT GETDATE();
timestamp
============================
2024-01-27 20:06:55.976353
注意仅限 leader 节点的函数!
DATEDIFF 替代 AGEGETDATE/SYSDATE 替代仅限 leader 的函数:CURRENT_TIMECURRENT_TIMESTAMPISFINITELOCALTIMELOCALTIMESTAMPNOWTRUNC 从 timestamp 返回 date-- 获取当前日期(基于 SYSDATE 为 2024-01-27 20:05:55.976353) SELECT TRUNC(SYSDATE);2024-01-27
DATE_TRUNC('datepart', timestamp) 截断到指定粒度,如小时或天-- 截断到分钟(基于 SYSDATE 为 2024-01-27 20:05:55.976353) SELECT DATE_TRUNC('minute', SYSDATE);
----CODE_GLUE----
```{out}
2024-01-27 20:05:55
DATE_PART(datepart, date or timestamp) -- 获取当前月份(基于 SYSDATE 为 2024-01-27 20:05:55.976353) SELECT DATE_PART(month, SYSDATE);1
month、day、yeardayofweek、quarter、timezone-- 获取当前星期几(基于 SYSDATE 为 2024-01-27 20:05:55.976353) SELECT DATE_PART(dayofweek, SYSDATE);6
DATE_CMP(date_1, date_2) 相对比较
类型专用函数
DATE_CMP_TIMESTAMPDATE_CMP_TIMESTAMPTZTIMESTAMP_CMPTIMESTAMP_CMP_TIMESTAMPTZTIMESTAMPTZ_CMP-- 基于 SYSDATE 为 2024-01-27 20:05:55.976353 比较表中的 5 个日期 SELECT date_col, TRUNC(SYSDATE) AS current_date, DATE_CMP(date_col, SYSDATE) FROM combined_history_projections ORDER BY date_col LIMIT 3;date_col | current_date | date_cmp ===========|===============|========== 2024-01-26 | 2024-01-27 | -1 2024-01-27 | 2024-01-27 | 0 2024-01-28 | 2024-01-27 | 1
DATEDIFF(datepart, value_1, value_2)-- 距第一季度结束的天数(基于 SYSDATE 为 2024-01-27 20:05:55.976353) SELECT DATEDIFF(day,TRUNC(SYSDATE),'2024-03-31') AS days_diff;days_diff =========== 64
DATEADD(datepart, quantity, value)-- 给日期加一周(基于 SYSDATE 为 2024-01-27 20:05:55.976353) SELECT TRUNC(SYSDATE) AS todays_date, TRUNC(DATEADD(week, 1, SYSDATE)) AS next_weeks_date;todays_date | next_weeks_date ============|================== 2024-01-27 | 2024-02-03
-- 按月给日期加一年
SELECT DATEADD(month, 12, '2024-02-29');
2025-02-28 00:00:00
-- 按年给日期加一年
SELECT DATEADD(year, 1, '2024-02-29');
2025-03-01 00:00:00
Redshift 入门