C#中错误的日期格式存储在C#中

时间:2018-02-25 11:03:25

标签: c# sql-server

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

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

  2. 第二列类型为DATE,并存储此格式:2018-07-02

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

    当我插入新日期时,其格式正在改变。我在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'
    

2 个答案:

答案 0 :(得分:1)

这取决于SQL Server的Environment设置,如果您的设置被设置为yyyy/MM/dd,那么当您在数据库中插入或更新日期时,它将保持这种状态,没有任何内容你的代码错了。

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

示例T-SQL可以是:

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

这将返回25-02-2018

答案 1 :(得分:0)

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