sql获取两个时间戳之间的时间差以及报错 [Err] 1292 - Truncated incorrect time value: '932:13:47'

      前段时间再项目开发过程中写到一个update语句,需求两个时间戳之差作为where条件但是用了

HOUR (TIMEDIFF(expr1,expr2))  方法成功了

UPDATE work_order_complaint
SET `type` = '中等'
WHERE
	HOUR (TIMEDIFF(NOW(), createTime)) <![ CDATA [ <= ]]> 72
AND HOUR (TIMEDIFF(NOW(), createTime)) > 48
AND treatmentStatus = 1
AND `type` != '严重'

但是这种方法并不是很好,比较粗糙精确度不高,最关键的是之前写的时候测试环境和生产环境都是没有问题的,半个多月以后再写新需求的时候顺便看了下测试环境发现出问题了,数据刷不出来,打开生产环境没问题。(这个我我现在还都不知道到底是什么原因造成的:希望有同样经验的大佬可以指点下)

      后来本地跑了下项目有报错,然后代开Navicat运行sql报错:[Err] 1292 - Truncated incorrect time value: '932:29:36'   。后来百度了一下,我以为可能是  HOUR (TIMEDIFF(expr1,expr2))  方法过时了。后来换了种写法,直接获取两个时间戳相差多少秒不再报这个错误;

UPDATE work_order_complaint
SET `type` = '中等'
WHERE
	UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(createTime) <= 259200  #2天
AND UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(createTime) > 172800  #3天
AND treatmentStatus = 1
AND `type` != '严重'

问题解决,但是其中这些原理还有很多不清楚,望大佬们指教!!!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值