在mysql中如何设置具有上次日期和时间的变量

时间:2017-01-26 11:14:03

标签: mysql sql

我正在尝试创建一个两个变量,它将保存昨天的日期和时间而无需手动输入日期,假设今天的日期是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 )

3 个答案:

答案 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)))