--**获取秒差**
SELECT round(date_part('epoch', TIMESTAMP '2019-05-05 12:11:20' - TIMESTAMP '2019-05-05 10:10:10'));
--**获取分钟差**
SELECT round(date_part('epoch', TIMESTAMP '2019-05-05 12:11:20' - TIMESTAMP '2019-05-05 10:10:10')/60);
--**获取小时差**
SELECT round(date_part('epoch', TIMESTAMP '2019-05-05 12:11:20' - TIMESTAMP '2019-05-05 10:10:10')/60/60);
--**获取天数差**
SELECT Date('2019-06-05') - Date('2019-05-03');
--**获取月份差**
select extract(year from age(TIMESTAMP '2018-04-05',TIMESTAMP '2017-02-04')) * 12 + extract(MONTH from age(TIMESTAMP '2019-04-05',TIMESTAMP '2017-02-04'));
--**获取年份差**
SELECT extract(year from age(TIMESTAMP '2018-04-05',TIMESTAMP '2017-02-04'));
对于
postgresql
,网上找到的求日期之差的代码很多都是有误导性的,比如求分钟之差,网上很多地方说是SELECT date_part('min', TIMESTAMP '2019-05-05 12:11:20' - TIMESTAMP '2019-05-05 10:10:10');这明显是不对的,因为这样只能获取到分钟域里的值,它的值只会在0-59之间, 只能在同一个hour的时候才准确. 而天数之差,网上说select EXTRACT(DAY from age(TIMESTAMP '2019-02-01',TIMESTAMP '2019-03-05'));也是不对的,也是同样的问题.
正确的做法应该是:分钟之差:SELECT round(date_part('
epoch
', TIMESTAMP '2019-05-05 12:11:20' - TIMESTAMP '2019-05-05 10:10:10')/60);
天数之差 SELECT Date('2019-06-05') - Date('2019-05-03');
除此之外,我在附件里还列举了年月日时分秒各自之差的算法.
按日期
计算
天数差
# select (('2019-11-18 12:05'::timestamp)::date - ('2019-10-18 12:05'::timestamp)::date) as day;
-----
# select (('2019-11-18 00:05'::timestamp)::date - ('2019-10-18 12:05'::times...
需求:获取开始时间到结束时间的间隔(单位:分钟)
PostgreSQL
:round(date_part('
epoch
', end_time - begin_time)::NUMERIC / 60) --时间间隔(INTERVAL)->间隔时间转换成秒->秒转换成分
1、使用to_date 返回比较的只是日期(即2020-12-15)
to_date(action_b->>'action_time','YYYY-MM-DD hh24:mi:ss')<to_date('2020-12-16 00:00:00','YYYY-MM-DD hh24:mi:ss')
2、使用timestamp关键字 返回结果准确
(action_b->>'action_time')::timestamp>timestamp '2020-12-15 18:0
PostgreSQL
中提供了三种实现模式匹配的方法:
SQL
LIKE操作符,更近一些的SIMILAR TO操作符,和POSIX-风格正则表达式。
1. LIKE:
string LIKE pattern [ ESCAPE escape-character ]
string NOT LIKE pattern [ ESCAPE escape-
先记录一下,后面再补充
clock_timestamp() 和 返回实时时间值的
函数
, 它们的返回值会在事务中随时间的前进而变化,和 oracle 的sysdate 都是返回实时时间。
pg
sql
对 date 和 time 数据类型区分比较明确。
select
pg
_typeof(clock_timestamp());
-[ RECORD...
<select id="selectList" resultType="com.entity.UserInfo" parameterType="java.util.List">
SELECT *
// 今天
<if test="type != null and type == 1">
AND DATE_FORMAT(T1.aaa_time, '%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d')
// 本周