【问题标题】:mysql query for filtering specific rows by date condition in php?在 php 中按日期条件过滤特定行的 mysql 查询?
【发布时间】:2012-07-26 03:36:34
【问题描述】:

我有一个表 'meetings',其中包含以下字段

id   recurring_start_date  recurring_end_date (Both are date fields)
1.    2012-07-22             2012-07-25
2.    2012-07-27             2012-08-05
3.    2012-07-26             2012-08-26
4.    2012-07-23             2012-10-23
5.    2012-08-24             2012-11-24
6.    2012-09-12             2012-10-19
7.    2012-07-28             2012-07-29

我想通过 sql 查询过滤那些在 start-end recurring dates 范围内包含 '2012-07-28' 日期并包括 start n end recurring date 的行.

我们知道结果将是第 2 行、第 3 行、第 4 行、第 7 行。
但是我如何在 php 中运行这个查询。

我试过了,但它不起作用。

$sql = "
    SELECT * 
    FROM 
        `meetingss` 
    WHERE 
        `recurring_st_date` >= \'2012-07-28\' 
        AND `recurring_ed_date` <= \'2012-07-28\' 
    ";

可能会出错,可能提供的日期条件错误。
有什么好的建议我的伙伴们这样做。谢谢...

【问题讨论】:

  • 这些是日期字段还是 varchar?

标签: php mysql sql phpmyadmin


【解决方案1】:
$sql = "SELECT * FROM `meetings` 
        WHERE date('2012-07-28') 
              between `recurring_st_date` AND `recurring_ed_date`";

【讨论】:

  • 您可能需要对字符串“2012-07-28”进行显式转换。至少这样会更便携。
  • 转换不是使其工作所必需的。但是便携是一个好点。
【解决方案2】:
`recurring_st_date` >= STR_TO_DATE('2012-07-28', '%Y-%m-%d') AND 
`recurring_ed_date` <= STR_TO_DATE('2012-07-28', '%Y-%m-%d')

【讨论】:

    【解决方案3】:

    去掉反斜杠

    `recurring_st_date` >= '2012-07-28' 
    AND `recurring_ed_date` <= '2012-07-28' 
    

    【讨论】:

      猜你喜欢
      • 2019-01-14
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      相关资源
      最近更新 更多