我希望对某个条件(以及DateTime
之前发生的事件March 1st 2016
)对列值('Preseason'
)进行排序,
事件在march 31st 2016
之后发生'PostSeason'
其他'Season'
。
--query ---
选择EventDate = Case
当EventDate<' 01-03-2016'然后' PreSeason'
当EventDate>' 31-03-2016'然后' PostSeason'
其他季节'
结束,
EventName来自tblEvent
- 错误讯息 '消息242,将varchar数据类型转换为日期时间数据类型会导致超出范围的值。'
答案 0 :(得分:0)
像...这样的东西。
ORDER BY
CASE
WHEN ISDATE(DateTime) = 1 THEN
CASE DateTime
WHEN <= '2016-03-01' THEN 1 -- Preseason
WHEN >= '2016-03-31' THEN 3 -- PostSeason
ELSE 2 END -- Season
ELSE 4 END, -- Not a date, figure out how to handle
DateTime
答案 1 :(得分:0)
- 好的,是日期格式问题。我在我的查询中使用了欧洲日期格式(dd-mm-yyyy),但我使用的系统采用美国日期格式(mm-dd-yyyy),因此我的查询失败。 **
**
选择Cast(案例
当EventDate&lt; =&#39; 01/01/2016&#39;然后&#39; PreSeason&#39;
当EventDate&gt; =&#39; 12/31/2016&#39;然后&#39; PostSeason&#39;
其他季节&#39;
结束为Varchar(25))作为季节,EventName来自tblEvent
感谢支持!!!!