php - 在 PHP/MYSQL 中基于 DATE 的 SELECT 的最佳方式

标签 php mysql date

我有一个名为“entry_date”的 DATETIME 列的数据库表,例如......

ID  entry_date
1   2012-10-13
2   2012-10-14
3   2012-10-15
4   2012-10-20
5   2012-10-20
6   2012-10-21

在 PHP/MYSQL 中基于 DATE 回显结果的最佳方式是什么,所以我只得到本周的结果,所以 2012-10-15 > 2012-10-21,但显然我不能只把它编码出来,因为每天都在变化 :) 那么你如何在 php 中做到这一点,所以明天本周的条件将是 2012-10-16 > 2012-10-22

最佳答案

今天,使用

where date(`entry_date`) = curdate()

这个月,

where month(`entry_date`) = month(curdate()) 
and  year(`entry_date`) = year(curdate()) 

本周

WHERE `entry_date` 
BETWEEN (CURDATE() - Interval DAYOFWEEK(CURDATE()) day) 
AND (CURDATE() - Interval DAYOFWEEK(CURDATE()) day + Interval 1 week)

以上查询有助于理解。但不利于性能的观点。请参阅下面的修改版本。它要好得多。

SET @s:=(CURDATE() - Interval DAYOFWEEK(CURDATE()) day)
SET @e:=(CURDATE() - Interval DAYOFWEEK(CURDATE()) day + Interval 1 week)
SELECT ....  WHERE `entry_date` BETWEEN @s AND @e

这里 DAYOFWEEK 函数返回一个从 1=Sunday 开始的整数。所以你的星期将被算作星期六作为开始日期。如果你想在星期一添加 + Interval 2 day with Interval.

也可以简化为如下。但它不支持任何一天作为一周的第一天。因此它不适用于所有文化。

where yearweek(`entry_date`) = yearweek(curdate())

关于php - 在 PHP/MYSQL 中基于 DATE 的 SELECT 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12993434/

相关文章:

javascript - 通过 Paypal Javascript 登录按钮检索用户信息

php - 删除整数索引数组

mysql - 为什么 WinForms ComboBox 选定的文本属性为空?

javascript - 将日期时间转换为本地时区 - Sugarcrm Moment js

php - 在类内部调用数组值

php - 如何从一个数组中的数据库中获取多个列?

mysql - 配对表查询

mysql - 如何在Excel中创建动态表格?

java - 将时间添加到当前时间会产生 1 分钟的误差 (Kotlin/Java)

java - 每月更新一条数据库记录