将数据类型nvarchar转换为datetime SQL Server时出错

时间:2017-01-26 05:22:39

标签: c# sql asp.net sql-server

我正面临一个问题

  

将数据类型nvarchar转换为datetime时出错

col-sm-6格式插入日期作为字符串文字。我在插入期间在SQL Server中使用此代码:

26/01/2017

7 个答案:

答案 0 :(得分:3)

尝试CONVERT(DATETIME, @PaymentDate, 103)

104是德国风格,它使用数字之间的句点,而不是斜杠。 103是英国/法国风格。

请参阅:https://msdn.microsoft.com/en-us/library/ms187928.aspx

答案 1 :(得分:2)

我注意到您的问题也标有 如果您将日期从c#传递给sql server, 不要将日期作为字符串传递。将它们作为DateTime传递。
.Net DateTime maps directly到SQL Server的DateTime 这样,您就不必处理显示格式,因为c#和SQL Server都不会在DateTime中存储显示格式。

如果您确实需要将字符串'26/01/2017'转换为日期,则应使用103作为样式参数,如其他答案中已建议的那样。

答案 2 :(得分:1)

此示例运行没有任何问题:

Declare  @PaymentDate  nvarchar(40)
set @PaymentDate = '26/01/2017'
SELECT CONVERT(DATETIME,@PaymentDate,104)

<强>结果:

2017-01-26 00:00:00.000

答案 3 :(得分:0)

检查sqlserver中的dateformat,然后相应地进行转换。 dateformat的代码
SET DATEFORMAT mdy

答案 4 :(得分:0)

尝试这些代码,并确保日期值不为空且超过1970-1-1。

CONVERT(DATETIME,@PaymentDate,103)

或者

CONVERT(DATETIME,@PaymentDate,105)

答案 5 :(得分:0)

使用SelectedDate来保存数据并得到该错误 即。 cmd.Parameters.AddWithValue(“ EndDate”,EndDatep.DateInput.SelectedDate);

答案 6 :(得分:0)

我遇到的问题是日期格式正确但时间部分不正确,日期就像

<块引用>

07/28/2021 00:00 PM

在 PM 中不可能有 00 小时,这就是为什么 DB 在保存日期/时间时不接受它们的原因。 所以我将日期转换为

<块引用>

07/28/2021 00:00 AM

它被保存了。也许对任何人都有帮助。