假设有表 works 其中有字段 update_time

计算时间差

可以直接使用减号 -

select now() - update_time from works

也可以使用 age 函数,其作用与减号 - 一模一样:

select age(now(), update_time) from works

得到结果长这样: 00:18:27.814387

时间加减

可以直接使用加号 +、减号 -

select now() + interval '1 day'

将获得明天此刻的时间

比如,将字段 update_time 增加三小时:

update works set update_time = update_time + interval '3 hour'

注意:上述SQL语句中的时间表示 '1 day''1 hour' 应添加 interval 关键字。否则在减去时间的时候会报错。

使用字符串表示时间的时候,PostgresSQL可以接受的时间单位有(其他表示方式不列举):

  • 'sec' 表示秒
  • 'min' 表示分钟
  • 'hour' 表示小时
  • 'day' 表示天
  • 'week' 表示周
  • 'month' 表示月
  • 'year' 表示年

时间比较

可以直接使用 大于 >、小于 < 号:

假设,我们要 update_time 在两天之内的数据:

select * from works where now() - last_update < interval '2 day'

提取时间字段

提取时间中的某个字段,使用 extract 函数。

取 年、月、日 如下:

select extract(year from now());
select extract(month from now()); 
select extract(day from now());

也可以使用字符串表示的时间:

select extract(day from timestamp '2020-05-14 01:02:03');

同样的,其中可以接受的时间单位有(其他表示方式不列举):

  • 'sec' 表示秒
  • 'min' 表示分钟
  • 'hour' 表示小时
  • 'day' 表示天
  • 'week' 表示周
  • 'month' 表示月
  • 'year' 表示年

另外,还可以获取距1970-01-01 00:00:00 UTC 的秒数:

select extract(epoch from now());
最后编辑:2020年05月14日 ©著作权归作者所有

发表评论

正在加载 Emoji
×