【问题标题】:Wrong Date format stores in SQL Server from C# [duplicate]来自 C# 的 SQL Server 中的错误日期格式存储 [重复]
【发布时间】:2018-02-25 11:03:24
【问题描述】:

我在 SQL Server 中有两列。我有一个 SQL 批量插入,它在数据库中以下列格式存储日期:

  1. 第一列类型是DATETIME - 它以这种格式存储日期:2018-07-02 00:00:00.000

  2. 第二列类型是DATE,它存储这种格式:2018-07-02

以下部分没有使用批量插入。

当我插入新日期时,它的格式正在改变。我的 C# 中有以下代码用于第一列和第二列

DateTime.ParseExact(txtODR.Text, "dd/MM/yyyy", null);
DateTime.ParseExact(txtWorkCompDt.Text, "dd/MM/yyyy", null);

当我查看SQL Server时,它以这种方式存储"2018-02-07 00:00:00.000" and "2018-02-07"

为什么当我尝试从 C# (2018-07-02 00:00:00.000 & 2018-07-02) 插入/更新时它没有以所需的格式存储。这里有什么问题?请帮帮我

SQL 代码

 DECLARE @P_ORDER_RECIVED_DATE NVARCHAR(100) = '2018/15/02'
 UPDATE [dbo].[T_INSTALATION]
       SET [Order_Recieved_Date] = CONVERT(VARCHAR,@P_ORDER_RECIVED_DATE, 123)   
       where Order_Install_ID = '161'

【问题讨论】:

  • Dates are not stored with display format in SQL Server。您的样本数据中的日期可能会被替换为July 2nd 2018February 7th 2018。尝试使用15/07/2018 之类的日期进行检查。
  • What is wrong here 您未能显示从 C# 插入/更新的代码。
  • Order_Recieved_Date列的数据类型是什么?
  • 日期时间是类型
  • 据我所知,SQL Server 中不支持年-日-月格式。要解析 2018/15/02,您必须手动提取日月等部分

标签: c# sql-server


【解决方案1】:

这取决于您的 SQL Server 的Environment 设置,如果您的设置被设置为yyyy/MM/dd,当您将日期插入或更新到数据库中时,它也会保持这种状态,您的代码没有任何问题.

有一种方法可以使用 SQL Server 的FORMAT 方法手动更改,无论全局配置如何,它都会格式化日期。

一个示例 T-SQL 可以是:

SELECT FORMAT(SYSDATETIME(), 'dd-MM-yyyy', 'en-US');

这将返回25-02-2018

【讨论】:

  • 出现错误 -> 'FORMAT' 不是可识别的内置函数名称。
  • 请阅读随附的格式链接以便更好地理解:)
  • SQL Server 2012+ 支持 FORMAT。如果您使用的是较低版本,您可以查看CONVERT 函数。
【解决方案2】:

dd/MM/yyyy 很容易与 MM/dd/yyyy 格式混淆。

例如,日期 11/02/2018 可能代表 2 月 11 日或 11 月 2 日。

您正在看到 SSMS 向您显示的内容。为了安全起见,最好以 yyyy MM dd 格式存储日期。无论存储格式如何,您都应该在SELECT 语句中使用自己的格式。

更新

不支持 yyyy-dd-MM 格式。您可以手动从给定字符串2018/15/02 中提取字符来创建日期。为了以后的使用,强烈建议在项目中将日期格式改为yyyy-MM-dd或者dd/mm/yyyy。

More info

【讨论】:

  • 它是 yyyy MM dd 格式,但是当我尝试从 c# 插入时,它会转到 yyy dd MM
  • 能否提供插入/更新的实际代码?
  • Shiblu,你的意思是SQL代码吗?
  • SQL/C# 您的插入代码所在的位置。
  • 在 OP 中更新..
猜你喜欢
  • 2016-08-01
  • 2021-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多