我正在尝试创建一个两个变量,它将保存昨天的日期和时间而无需手动输入日期,假设今天的日期是26/01/2017并且我的变量应该保持像
declare p_run_from_date datetime;
declare p_run_to_date datetime;
set p_run_from_date = '2016-01-25 00:00:00';
set p_run_to_date = 2016-01-25 23:59:59';
代码可能如下所示,但不知道如何设置时间
set p_run_from_date = ( CURDATE() - INTERVAL 1 DAY )
答案 0 :(得分:1)
首先,你应该改变你的逻辑。而不是:
where date between p_run_from_date and p_run_to_date
或
where date >= p_run_from_date and date <= p_run_to_date
使用:
where date >= p_run_from_date and date < p_run_to_date
这种不平等使事情变得更加简单。并且,您不必担心几秒钟。
为此:
set p_run_from_date = date_sub(CURDATE(), interval 1 day);
set p_run_to_date = CURDATE();
我应该指出,你特定问题的答案是:
set p_run_from_date = date_sub(CURDATE(), interval 1 day);
set p_run_to_date = date_sub(CURDATE(), interval 1 second);
答案 1 :(得分:1)
您可以使用CURDATE() - INTERVAL 1 SECOND
SELECT CURDATE() - INTERVAL 1 SECOND
<强>结果强>
CURDATE() - INTERVAL 1 SECOND
-------------------------------
2017-01-25 23:59:59
所以答案应该是
set p_run_to_date = (CURDATE() - INTERVAL 1 SECOND)
答案 2 :(得分:0)
试试这个:
DATE_ADD(now(), interval -1 day)
关于你的最新问题,试试这个:
TIMESTAMP(DATE(DATE_ADD(now(), interval -1 day)))