PHP匹配2个代码的输出

时间:2013-02-22 11:33:57

标签: php

我需要匹配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";

任何人都知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果您只是尝试匹配SQL查询中的日期,这就像您所看到的那样,您可以将日期作为字符串传递,每端都有#。这将告诉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 :“date”通常是数据库中的保留字,不应该真正用于字段名称和变量。请参阅上面的编辑代码。

另外我建议使用php使用date()函数格式化日期,而不是在查询中对其进行格式化。这样可以更灵活地在脚本中实际使用日期。