【问题标题】:Error converting data type nvarchar to datetime SQL Server将数据类型 nvarchar 转换为日期时间 SQL Server 时出错
【发布时间】:2017-06-11 13:33:20
【问题描述】:
我遇到了问题
将数据类型 nvarchar 转换为日期时间时出错
在将日期作为26/01/2017 格式的字符串文字插入期间。我在插入期间在 SQL Server 中使用此代码:
CONVERT(DATETIME, @PaymentDate, 104)
【问题讨论】:
标签:
c#
sql
asp.net
sql-server
【解决方案2】:
我注意到您的问题也被标记为c#。
如果您将日期从 c# 传递到 sql server,
不要将日期作为字符串传递。将它们作为 DateTime 传递。
.Net DateTime maps directly 到 SQL Server 的 DateTime。
这样一来,您就完全不必处理显示格式了,因为 c# 和 SQL Server 都不会在 DateTime 中存储显示格式。
如果您确实需要将字符串 '26/01/2017' 转换为日期,您应该使用 103 作为您的样式参数,正如其他答案中已经建议的那样。
【解决方案3】:
这个例子运行没有任何问题:
Declare @PaymentDate nvarchar(40)
set @PaymentDate = '26/01/2017'
SELECT CONVERT(DATETIME,@PaymentDate,104)
结果:
2017-01-26 00:00:00.000
【解决方案4】:
检查 sqlserver 中的日期格式,然后进行相应的转换。日期格式代码
设置日期格式 mdy
【解决方案5】:
试试这些代码,确保日期值不为空且超过 1970-1-1。
CONVERT(DATETIME,@PaymentDate,103)
或者
CONVERT(DATETIME,@PaymentDate,105)
【解决方案6】:
使用 SelectedDate 以防您保存数据并收到该错误
IE。
cmd.Parameters.AddWithValue("EndDate", EndDatep.DateInput.SelectedDate);
【解决方案7】:
我遇到的问题是日期格式正确但时间部分不正确,日期是这样的
2021 年 7 月 28 日下午 00:00
在 PM 中不可能有 00 小时,这就是 DB 在保存日期/时间时不接受它们的原因。
所以我将日期转换为
2021 年 7 月 28 日上午 00:00
它被保存了。也许对任何人都有帮助。