我需要匹配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";
任何人都知道如何解决这个问题?
答案 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()
函数格式化日期,而不是在查询中对其进行格式化。这样可以更灵活地在脚本中实际使用日期。