SQL基础:《SQL HACKS》第4章——日期处理,总共列举了5个tips,将字符串转换为日期、发现数据中的趋势、基于任何日期条件的报告等,下述为我对这5个tips的评析。
1、将字符串转换为日期
2、发现数据中的趋势
3、基于任何条件的报告
4、生成季度报告
5、月份的第二个星期二
本次评析,我把这5个tips都归在一起,原因是作者讲述的日期处理,其实就是sql 的日期、时间函数灵活运用。如发现数据中的趋势无非就是周期的提取(如年、月、周)及求和或者平均值等,基于任何条件的报告也是基于某个时间段的数据归纳、分析等。
Sql中日期处理,我认为至少需了解下述几点知识:
1)insert,update记录的时候,日期、时间类型是如何表示的,是’2011-1-29’呢还是 date ’2011-1-29’?
2)日期、时间基本处理函数:如日期加减、年月日提取等
3)数据库当前日期、时间的取法
下述为postgresql的一些日期、时间函数
日期/时间操做符
操作符 | 例子 | 结果 |
+ | date '2001-09-28' + integer '7' | date '2001-10-05' |
+ | date '2001-09-28' + interval '1 hour' | timestamp '2001-09-28 01:00' |
+ | date '2001-09-28' + time '03:00' | timestamp '2001-09-28 03:00 |
日期/时间函数
函数 | 返回类型 | 描述 | 例子 | 结果 |
age(timestamp, timestamp) | interval | 减去参数,生成一个使用年、月的"符号化"的结果 | age('2001-04-10', timestamp '1957-06-13') | 43 years 9 mons 27 days |
age(timestamp) | interval | 从current_date减去得到的数值 | age(timestamp '1957-06-13') | 43 years 8 mons 3 days |
current_date | date | 今天的日期;见 Section 9.9.4 |
|
|
current_time | time with time zone | 现在的时间;见 Section 9.9.4 |
|
|
current_timestamp | timestamp with time zone | 日期和时间;见 Section 9.9.4 |
|
|
date_part(text, timestamp) | double precision | 获取子域(等效于 extract);又见 Section 9.9.1 | date_part('hour', timestamp '2001-02-16 20:38:40') | 20 |