我试图从数据库中获取DISTINCT月份和年份。格式化日期并将其放入下拉列表中。但我得到的所有记录是1月14日
继承我的代码:
<select name="month">
<?php
$sSDate = "SELECT DISTINCT year(eventStartDate), month(eventStartDate) FROM te_events GROUP BY eventStartDate ORDER BY eventStartDate ASC";
$qrSDate = mysql_query($sSDate) or die (mysql_error());
while($rowSDate = mysql_fetch_assoc($qrSDate))
{
$s_event_start_month = $rowSDate ['month(eventStartDate)'];
$s_event_start_year = $rowSDate ['year(eventStartDate)'];
$date = date("M", strtotime($s_event_start_month)). date("y", strtotime($s_event_start_year));
echo '
<option value="'.$date.'">
'.$date.'
</option>
';
}
?>
</select>
答案 0 :(得分:0)
我不知道我是否完全理解这个问题,但请试试这个:
$date = date("M y", strtotime($s_event_start_month.' '.$s_event_start_year));
或
$date = date("M y", mktime(0, 0, 0, $s_event_start_month, 1, $s_event_start_year));
答案 1 :(得分:0)
问题在于您的查询:
SELECT DISTINCT year(eventStartDate)
, month(eventStartDate)
FROM te_events
GROUP BY eventStartDate
ORDER BY eventStartDate ASC
由于不同的年份和月份是不同的字段,因此您获得的组合比您想要的多。如果你想要不同的年月,这更有意义,你想要这样的东西:
select distinct to_char(eventStartDate, 'yyyy-mm') ym
from te_events
where whatever, maybe
order by ym
你的问题没有指定数据库引擎,所以为了这个答案,我选择了oracle。不同的数据库有不同的方法来实现相同的结果。