我正在为开始时间和结束时间发送日期变量 找到的开始时间自动设置为上午12点 但是我需要将结束日期设置为23:59:59
下面是解决日期的代码片段:
IN fromDate varchar (50),
IN toDate varchar (50),
IN timeZone varchar (50))
BEGIN
DECLARE startDate varchar (50);
DECLARE endDate varchar (50);
DECLARE mylogID Int;
SET startDate = FROM_UNIXTIME(fromDate/1000);
SET endDate = FROM_UNIXTIME(toDate/1000);
这是实际计算时差的代码片段,在这里我需要endDate与1/1/2013 11:59:59 pm相反,而不是默认的1/1/2013 12:00 AM < / p>
time_to_sec(timediff(endDate, startDate)) / 3600 AS totalTimeRange
答案 0 :(得分:0)
SET endDate = DATE_SUB(FROM_UNIXTIME(toDate/1000),INTERVAL 1 SECOND);
这是你问题的简单答案。
http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_date-sub
...但是......确保你正在解决正确的问题。考虑这两个表达方式:“今晚午夜之前”和“今晚23:59:59之前或之前”。如果你考虑整数时间戳,它们似乎是等价的,但只要小数秒进入混合,这两个表达式明显不相等,因为如果你使用后者,并突然引入毫秒,你现在不得不说“今晚23:59:59.999之前或之前”......今晚午夜之前“仍然有效。”
我建议如果你使用BETWEEN
作为第二个参数结束时间戳,或者<=
endDate,那么逻辑上精确的修复不是减去一秒,而是使用小于比较<
endDate。