小编jed*_*ley的帖子

将 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';
Run Code Online (Sandbox Code Playgroud)

SMSS 返回:

将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。

我不明白为什么当“创建”设置为日期时间时数据从 varchar 转换为日期时间:

列 我需要告诉服务器“创建”是日期时间吗?如果没有,为什么我会收到此 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');`
Run Code Online (Sandbox Code Playgroud)

sql-server type-conversion datetime

9
推荐指数
3
解决办法
18万
查看次数

标签 统计

datetime ×1

sql-server ×1

type-conversion ×1