PHP格式日期返回重复项

时间:2014-04-17 21:43:24

标签: php sql date-format

我试图从数据库中获取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>

2 个答案:

答案 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));

about mktime

答案 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。不同的数据库有不同的方法来实现相同的结果。