【发布时间】:2016-10-27 08:07:03
【问题描述】:
select top 10
FormANo, Created, Changed
from
FormA
where
Created >= convert(datetime, '2015-07-05 14:04:11.000')
and Created <= convert(datetime, '2016-04-21 20:13:08.280')
当我运行查询时,我收到以下错误
消息 242,第 16 级,状态 3,第 4 行
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。
如何在 SQL Server 2014 中使用原始 SQL 查询来解决这个问题?
【问题讨论】:
-
Created列的数据类型是什么? -
如果你运行它们,两者都转换返回正确的值。您确定这是您要转换的值吗?
-
您的 Created 列的 DataType 是什么? .Net 为您提供了一个我认为您需要的函数 Convert.ToDateTime()
-
使用 Convert.ToDateTime 并确保您使用相同的日期格式。也许 .Net 会尝试将您的年份转换为一天或某事。
-
使用明确的日期格式。使用
T分隔日期和时间,而不是空格。 SQL Server 有一些规则,它可以将aaaa-aa-aa aa:aa:aa.aaa(其中a代表一个数字)解释为yyyy-dd-MM hh:mm:ss.sss,尽管据我所知没有文化实际上使用这种日期格式.当使用aaaa-aa-aaTaa:aa:aa.aaa呈现时,它没有这样的歧义。
标签: sql-server datetime