[英]Insert php date(“Y-m-d”) directly into SQL query
我目前正在运行一个SQL查询以计算昨天的结果。 我正在尝试压缩我的代码,并想知道是否有一种方法可以插入以下命令...
date("Y-m-d", strtotime( '-1 days' ) );
直接进入我的查询? 目前,我正在为其分配一个变量,然后像这样插入变量...
$yesterday = date("Y-m-d", strtotime( '-1 days' ) );
SELECT COUNT(*) as count FROM my_table WHERE value='d01' AND date LIKE '%$yesterday%'
您可以使用mysql函数来执行作业
date = DATE(DATE_SUB(NOW(), INTERVAL 1 DAY))
这里进一步说明
mysql> select DATE_SUB(NOW(), INTERVAL 1 DAY);
+---------------------------------+
| DATE_SUB(NOW(), INTERVAL 1 DAY) |
+---------------------------------+
| 2014-04-20 07:27:01 |
+---------------------------------+
1 row in set (0.03 sec)
mysql> select DATE(DATE_SUB(NOW(), INTERVAL 1 DAY));
+---------------------------------------+
| DATE(DATE_SUB(NOW(), INTERVAL 1 DAY)) |
+---------------------------------------+
| 2014-04-20 |
+---------------------------------------+
您可以使用普通的(my)SQL实现此目的:
SELECT COUNT(*) as count FROM my_table WHERE value='d01' AND
YEAR(date) = YEAR(DATE_SUB(NOW(), INTERVAL 1 DAY)) AND
MONTH(date) = MONTH(DATE_SUB(NOW(), INTERVAL 1 DAY)) AND
DAY(date) = DAY(DATE_SUB(NOW(), INTERVAL 1 DAY))
或-使其紧凑:
WHERE DATE(date_column) = DATE(DATE_SUB(NOW(), INTERVAL 1 DAY))
重要的是不要只使用时间间隔,因为它可以追溯到24小时-因此,在23:50时,您只能捕获“昨天”的10分钟。 要么只比较年/月和日-要么在两侧都使用DATE()
函数,这将使双方都精确地减少到年/月和日。
尝试这样的事情
SELECT COUNT(*) as count FROM my_table WHERE value='d01' AND DATE(date) = DATE(DATE_SUB(NOW(), INTERVAL 1 DAY));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.