上周接到一个开发任务,要求写一个超时1小时未提交的接口,业务不算复杂,写sql 的时候倒是卡壳了一会。
mysql的时间相减获得小时有个函数: TIMESTAMPDIFF(unit,start,end),
其中 unit 有4个参数:
MINUTE:计算相差多少分钟;
HOUR:计算相差多少小时;
DAY:计算相差多少天;
MONTH:计算相差多少月。
项目中使用的数据库是 postgers 数据库,以前写的项目是用到的数据库都是mysql,所以我还是使用 TIMESTAMPDIFF(unit,start,end) 这个函数去写SQL语句,具体如下:
SELECT pid,username
FROM exam_questions_expand
WHERE is_submit = '0'
AND TIMESTAMPDIFF(HOUR,createdtime,CURRENT_TIMESTAMP) > 1
GROUP BY pid,username
运行后直接报错,postgers 不支持这种语法,没办法,转而求助万能的百度。但是遗憾的是找了半天也没能找到契合需求的文章,反而有种乱花渐欲迷人眼的感觉。
静下心来,苦思冥想,忽然灵机一动,试着写了一些SQL并去验证,嘿嘿,还真的成功了!
SELECT pid,username
FROM exam_questions_expand
WHERE is_submit = '0'
AND CURRENT_TIMESTAMP - createdtime > INTERVAL '1 hour'
GROUP BY pid,username
不过要记得在xml中写的SQL 大于号 要进行转义。
挺开心的,记录一下