在执行插入sql 的时候报错:[SQL Server]从字符串转换日期和/或时间时,转换失败。 (241),查看了表字段,插入值均是正常的,又查看了不为空字段也是正常的,datatime字段也都正常,但就一直报错,
后来发现有一个datatime字段是可为空的,在插入语句中添加该字段后,发现正常,
在排除故障中,尝试把所有datatiem字段都删除,这个可以为空的datatime字段不能删除。就尝试添加该字段,就OK了。也不知道是什么原因。有大佬看到,麻烦指点一二。
开发人员有
时
候使用类似下面
SQL
将
字符串
转换
为
日期
时间
类型,乍一看,这样的
SQL
的写法是没有什么问题的。但是这样的
SQL
其实有
时
候就是一个定
时
炸弹,随
时
可能出现问题(),下面简单对这种情况进行一个简单概括。
SELECT CONVERT(DATETIME, '2020-01-13 6:46:42');
如果你将连接数据库的登录名的默认语言修改为Aribc,然后去执行上面
SQL
语句,就会遇到错误,为什么呢?
为什么上面
SQL
的
日期
转换
出错了呢?其实是因为登录名修改默认语言后,会话对应的date_format变化了,从mdy变成了dmy,所以上面
转换
就报错了,有
时
候不报错,但是可能
转换
成一个错
你可以使用TRY_CONVERT函数来尝试将
字符串
转换
为
日期
或
时间
格式,如果
转换
失败
,则返回NULL。然后你可以使用IS NOT NULL来过滤掉这些NULL值。出现这个错误是因为你在
SQL
Server
中尝试将一个无效的
字符串
转换
为
日期
或
时间
格式。如果你想要更细致的控制,可以使用TRY_CAST或TRY_PARSE函数来尝试将
字符串
转换
为特定的数据类型。这些函数可以帮助你处理不同的
日期
和
时间
格式,以及不同的语言和区域设置。这将返回所有可以成功
转换
为
日期
格式的行,而过滤掉那些无法
转换
的行。
问题描述:
SQL
Exception: com.microsoft.
sql
server
.jdbc.
SQL
Server
Exception: 从
字符串
转换
日期
和/或
时间
时
,
转换
失败
。 Msg 241, Level 16, State 1, 从
字符串
转换
日期
和/或
时间
时
,
转换
失败
。
问题分析:
1、在
SQL
Server
中datetime类型的值跟varchar类型的值比较,会将varchar类型的值先转为datetime类型,这样会报错。
select * from t_users where 1=1
select count(*) num,分类 , 所在党委
from [yiandada].[dbo].[V_dangyuan_3] --where 分类 = 'K:51 ~ 55'
group by 分类, 所在党委
2.第二步:取消注释,执行
失败
。
为什么?从
字符串
转换
日期
和/或
时间
时
,
转换
失败
?我没有转啊
今天生成环境出现了一个问题,在使用UNION联合查询两个订单表的
时
候,老是提示: 从
字符串
转换
日期
和/或
时间
时
,
转换
失败
,然后看了一下数据,没有问题啊,所有的
时间
都是有数据并且格式十分正确。
sql
server
中拼接
字符串
时
,需要把datetime型转化为char型才能进行拼接。与int转char类型不同,其需要多加引号:
declare @Dtime datetime
set @Dtime = '2020-03-05 14:16:36'
select 'INSERT into table1(pointID) VALUES ('+@Dtime+');'
错误提示:从
字符串
转换
日期
和/或
时间
时
,
转换
失败
。 (241)
解决方法:
外多加个引号
declare @Dtime da
Microsoft
SQL
Server
Developer Edition (64-bit)
Microsoft
SQL
Server
Enterprise Edition (64-bit)
企业版的报错 : 查询 top(100