mysql使用to_days()函数引起的一个问题

  我们做的系统要求每日充值到系统的钱有一个限额,所以在业务上使用了统计当天该用户交易流水的充值记录比对充值限额,sql语句如下:

select sum(trade_amount) from trade_flow where user_id = #{userId} and
trade_type =‘1’ and status = ‘3’ and TO_DAYS(trade_time) =
TO_DAYS(NOW())

  结果某天发现限额失效了,但是代码没有动过啊!就把代码全部和部分条件执行做比较,发现是TO_DAYS(trade_time) = TO_DAYS(NOW())这一块出了问题。
TO_DAYS函数是指从零开始到函数内时间的天数,TO_DAYS(trade_time)表示从0到交易日的天数,TO_DAYS(NOW()表示从0到现在的天数,所以整条sql统计的是今天的充值金额。
  now()函数指当前的系统时间,经查系统时间比现在少了4天,结果导致限额失效,修改系统时间后,问题解决。

linux修改系统时间:
date命令将日期设置为2014年6月18日
---- date -s 06/18/14

将时间设置为14点20分50秒
---- date -s 14:20:50

将时间设置为2014年6月18日14点16分30秒(MMDDhhmmYYYY.ss)
----date 0618141614.30

你可能感兴趣的:(mysql,java)