在计划中奇怪地放置事件

时间:2014-01-31 22:29:27

标签: coldfusion

我有一个页面,显示一段时间内的事件安排。感谢Leigh在这个网站上,我能够以我想要的方式工作,除了一个小问题。其中一个事件位于其中一个列表的底部,按日期时间列“eventtime”排序。我很困惑。

这是我的代码:

   <cfquery datasource="fairscheduledb" name="getfairevents">
    SELECT  fd.FairDayDate, fd.daycolor, fd.description, ev.eventname, ev.eventday, t.eventtype, ev.eventtime
    FROM    fairdays fd
          LEFT OUTER JOIN events ev ON ev.eventday = fd.fairdaydate
          LEFT OUTER JOIN eventtypes t ON t.eventtype = ev.eventtype
    ORDER BY fd.fairDaydate, t.id, ev.eventtime
   </cfquery>

<cfoutput query="getfairevents" group="eventday">
    <div class="schedulebox">
        <!--- display event dates --->
        <div class="schedulehead" style="clear: both; color: ###daycolor#;">#dateformat(fairdaydate,"dddd, mmmm dd")#</div>
        <div class="schedulesubhead" style="clear: both; color: ##ffffff; background: ###daycolor#;">#description#</div>
        <!--- event types for current date --->
        <cfoutput group="eventtype">
            <div class="scheduleitemtitle" style="clear: both; width: 700px; color: ###daycolor#;">#eventtype#</div>
            <!--- individual events --->
            <cfoutput>
                <div class="scheduleitem" style="float: left; width: 75px; text-align: right;"><strong>#LCase(TimeFormat(eventtime,"h:mmtt"))#</strong></div>
                <div class="scheduleitem" style="float: left; width: 550px;"> #eventname#</div><br/>
            </cfoutput>
        </cfoutput>
    </div>
</cfoutput>

2 个答案:

答案 0 :(得分:1)

您在事件日和事件类型上对输出进行分组。您需要将这两列添加到ORDER BY中,否则可能会得到不可预测的排序结果。

ORDER BY fd.fairDaydate, t.id, ev.eventday, ev.eventtime, ev.eventtype

答案 1 :(得分:1)

确定。我发现了这个问题,这对我来说是一个愚蠢的错过。当我昨天更改了该特定条目并输入正确的时间时,它会“自动插入”当前日期。换句话说,我键入“8:45 pm”,然后点击回车,MSSQL自动将其转换为“2014-01-31 19:45:00.000”,因为昨天是2014年1月31日。最初输入数据时,它是01-23-2014,因此所有条目都反映了该日期。因为我用于该列的数据类型是datetime。

我通过将数据类型更改为时间(7)和中提琴来解决问题,一切都很好。我现在感到愚蠢。

感谢所有试图帮助解决这个问题的人。