0

我需要匹配2个代码的结果格式:

我需要得到这个的输出/格式:

$event_day = $year.'-'.$month.'-'.$list_day;  // $event_day

匹配这个:

DATE_FORMAT(date,'%Y-%m-%d')

完整代码:

$query = "
  SELECT title, DATE_FORMAT(date,'%Y-%m-%d') AS date 
  FROM table 
  WHERE user_id = '$session_user_id' 
    AND date BETWEEN '$year-$month-1' AND '" . date("Y-m-t", strtotime("$year-$month-1")) . "' 
    AND active = 1";

我的问题是 $event_day 仅显示以下事件:10 月、11 月和 12 月。

我在下面的代码中遇到了类似的问题:

$query = "
  SELECT title, DATE_FORMAT(date,'%Y-%m-%d') AS date 
  FROM table 
  WHERE user_id = '$session_user_id' 
    AND date LIKE '$year-$month%' 
    AND active = 1";

并使用以下代码修复了它:

$query = "
  SELECT title, DATE_FORMAT(date,'%Y-%m-%d') AS date 
  FROM table 
  WHERE user_id = '$session_user_id' 
    AND date BETWEEN '$year-$month-1' AND '" . date("Y-m-t", strtotime("$year-$month-1")) . "' 
    AND active = 1";

有谁知道我该如何解决这个问题?

4

1 回答 1

0

如果您只是尝试匹配 SQL 查询中的日期,这就是您所追求的,您可以将日期作为字符串传递,#每端带有 a。这将告诉 SQL 将字符串解析为日期,而您提供的格式并不重要。例外情况是它可能会混淆美国/欧盟日期格式,如 dd/mm/yyyy 与 mm/dd/yyyy。

$query = "SELECT title, DATE_FORMAT(myDate,'%Y-%m-%d') AS formattedDate 
          FROM table 
          WHERE user_id = '$session_user_id' 
          AND (myDate BETWEEN #$year-$month-1# AND #$year-$month-1#) 
          AND active = 1";

这种格式应该有效,但您的查询是选择同一日期之间的记录,因此您只会获得实际在该日期的记录。你也可以使用WHERE date = #$year-$month-1#

编辑:这假设您的日期字段数据类型在数据库中正确设置为日期/时间。

edit2:“日期”通常是数据库中的保留字,不应真正用于字段名称和变量。请参阅上面的编辑代码。

此外,我建议使用 php 使用date()函数来格式化日期,而不是在查询中格式化它。这允许更灵活地实际使用脚本中的日期。

于 2013-02-22T11:47:03.567 回答