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 |