我有一个页面,显示一段时间内的事件安排。感谢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>
答案 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)和中提琴来解决问题,一切都很好。我现在感到愚蠢。
感谢所有试图帮助解决这个问题的人。