繁体   English   中英

将php date(“ Ymd”)直接插入SQL查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM