5
将varchar数据类型转换为datetime数据类型导致超出范围的值
我正在尝试运行一个简单的查询来获取在11月创建的所有行: SELECT COUNT(*) FROM dbo.profile WHERE [Created] BETWEEN '2014-11-01 00:00:00.000' AND '2014-11-30 23:59:59.997'; SMSS返回: 从varchar数据类型到datetime数据类型的转换导致值超出范围。 我不明白为什么将“ Created”设置为datetime时将数据从varchar转换为datetime: 我需要告诉服务器“创建”是日期时间吗?如果没有,为什么我会收到此varchar消息? 编辑:数据库中的值为YYYY-MM-DD。下面来自@SqlZim的回复说,我需要使用convert()告诉sql数据库中的日期是什么格式-并将空格字符替换为字母T: select count(*) from dbo.profile where [created] between convert(datetime,'2014-11-01T00:00:00.000') and convert(datetime,'2014-11-30T23:59:59.997');`