繁体   English   中英

PHP格式日期返回重复项

[英]PHP format date returning duplicates

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

我不知道我是否完全理解问题,但请尝试以下操作:

$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));

关于mktime

问题是您的查询:

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。 不同的数据库具有不同的方式来获得相同的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM