Lecture 8. Working with Dates and Times in PostgreSQL 日期和时间的使用
日期和时间类型 DATE
& TIME
像「YYYY-MM-DD」这种主流的表示时间的格式,来自于 ISO 8601 标准。
timestamp
,格式是 YYYY-MM-DD HH:MM:SSdate
,格式 YYYY-MM-DDtime
, HH:MM:SS
插入和选择日期(date)类型数据的时候,可以直接用字符串字面量去表示,PostgreSQL 会自动按照 ISO8601 标准解析为对应日期。
同时,日期类型也可以比较大小。比如选取一段日子之间的天,可以:where day >= 'xxx' and day <= 'yyy'
;将询问结果按照日期从新到旧排序,可以写 order by day desc/asc
时间戳类型 TIMESTAMP
时间戳类型相当于日期和时间类型的结合,格式通常是:YYYY-MM-DD HH:MM:SS,甚至可以选择在后面加上 ±XX 表示时区。例如:'2022-10-13 14:58:00+8'
就是撰写这个笔记的时间戳。
时间戳类型甚至可以跟日期类型直接进行比较。比如,2020-12-31 12:34:56 > 2020-12-30
这个表达式是真的。
实用函数
now()
,返回现在的时间戳,包含时区信息date_part(text, timestamp)
,用于从时间戳当中提取特定信息,如date_part('hour', timestamp'2022-10-13 14:58:00')
返回这个时间戳的小时信息,即 14extract(field from timestamp)
,也是用于从时间戳中提取特定信息,如extract(dow from '2022-10-13')
的值是 4,因为这一天是星期四,是这个星期的第四天。星期天是一个星期的第零天,值是 0;星期一到星期六就是 1~6。DOW 是 date of week 的意思,类似地也有 DOY,表示一年当中的第几天。