繁体   English   中英

如何在 SQL 服务器中使用日期时间 WHERE 子句 select?

[英]How can I select with a datetime WHERE clause in SQL Server?

如果我需要 select 小于日期时间,我会这样做:

  SELECT StackerReplacedEventID, Occured 
  FROM StackerReplacedEvent 
  WHERE Occured<CONVERT(DATETIME, 'Jul 11 2011 03:50PM', 120)

但我得到一个错误。 我也试过这种方式:

WHERE Occured<'Jul 11 2011 03:50PM'

使用 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'дек')

不过,这很糟糕。 请考虑为此数据选择正确的数据类型。

现在你明白为什么理解你使用的语言而不是“有帮助地”翻译错误信息很重要吗?

CONVERT(DATETIME, 'Jul 11 2011 03:50PM')它对我有用

暂无
暂无

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

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