如果我需要选择的时间少于datetime,我会这样做:
SELECT StackerReplacedEventID, Occured
FROM StackerReplacedEvent
WHERE Occured<CONVERT(DATETIME, 'Jul 11 2011 03:50PM', 120)
但是我收到了错误。我也尝试过这种方式:
WHERE Occured<'Jul 11 2011 03:50PM'
答案 0 :(得分:5)
使用ISO日期格式而非区域和/或语言特定格式。
WHERE Occured < '2011-07-11T15:50:00';
现在我们知道语言设置是俄语(经过15次尝试),也许我们可以在这里做一些暴力工作。
WHERE Occured < CONVERT(DATETIME,
REPLACE(N'Jul 11 2011 03:50PM', N'Jul', N'июл'), 100)
请注意,N前缀很重要!
所以实际上,因为你将拥有代表所有12个月的数据,所以它可能类似于:
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
original_column,N'Jan', N'янв')
,N'Feb', N'фев')
,N'Mar', N'мар')
,N'Apr', N'апр')
,N'May', N'май')
,N'Jun', N'июн')
,N'Jul', N'июл')
,N'Aug', N'авг')
,N'Sep', N'сен')
,N'Oct', N'окт')
,N'Nov', N'ноя')
,N'Dec', N'дек')
但是,这太可怕了。请考虑为此数据选择正确的数据类型。
现在您明白为什么要理解您使用的语言,而不是“帮助”翻译错误信息,这很重要吗?
答案 1 :(得分:0)
CONVERT(DATETIME, 'Jul 11 2011 03:50PM')
它正在为我工作