【问题标题】:how to insert datetime into the SQL Database table?如何将日期时间插入 SQL 数据库表?
【发布时间】:2011-07-14 07:58:06
【问题描述】:

如何将日期时间插入 SQL 数据库表? 有没有办法通过 C#/.NET 中的插入命令插入这个查询?

【问题讨论】:

标签: .net sql sql-server sql-server-2005 c#-3.0


【解决方案1】:

DateTime 值应该像被单引号括起来的字符串一样插入:

'20100301'

SQL Server 允许许多可接受的日期格式,并且大多数开发库都应该提供一系列类或函数来正确插入日期时间值。但是,如果您是手动操作,请务必使用DateFormat 区分日期格式并使用通用格式:

Set DateFormat MDY --indicates the general format is Month Day Year

Insert Table( DateTImeCol )
Values( '2011-03-12' )

通过设置日期格式,SQL Server 现在假定我的格式是 YYYY-MM-DD 而不是 YYYY-DD-MM

SET DATEFORMAT

SQL Server 还可以识别始终以相同方式解释的通用格式:YYYYMMDD,例如20110312.

如果您询问如何使用 T-SQL 插入当前日期和时间,那么我建议使用关键字 CURRENT_TIMESTAMP。例如:

Insert Table( DateTimeCol )
Values( CURRENT_TIMESTAMP )

【讨论】:

  • 正确吗?你Set DateFormat MDY,但后来你说SQL Server 现在假定我的格式是YYY-MM-DD。为什么 SQL Server 不希望您的格式与 Set DateFormat 匹配并查找 MM-DD-YYYY?我并不是说这是错误的(我不知道),但这似乎违反直觉。
  • @JerryOL - Set DateFormat MDY 仅确定 SQL 如何解释月份和日期的顺序,而不是确切的格式。你可以自己试试。如果你打电话给Set DateFormat DMY2011-03-12 是 12 月 3 日。如果您致电Set DateFormat MDY,则同一日期是 3 月 12 日。
  • @JerryOL - 顺便说一句,我也可以使用YMDYDM 并达到相同的效果,但是我发现这些格式只有在您没有通过四位数年份时才有用。
【解决方案2】:

您需要在表格中有一个datetime 列。然后你可以像下面这样插入来插入当前日期:

INSERT INTO MyTable (MyDate) Values (GetDate())

如果不是今天的日期,那么您应该可以使用字符串和specify the date format

INSERT INTO MyTable (MyDate) Values (Convert(DateTime,'19820626',112)) --6/26/1982

你并不总是需要转换字符串,通常你可以这样做:

INSERT INTO MyTable (MyDate) Values ('06/26/1982') 

SQL Server 会帮你解决的。

【讨论】:

    【解决方案3】:

    如果您考虑到实际时间,GETDATE() 将是您正在寻找的功能

    【讨论】:

      【解决方案4】:

      DateTime 值应该像被单引号括起来的字符串一样插入 '20201231' 在许多情况下,需要将它们显式转换为 datetime CAST(N'20201231' AS DATETIME),以避免带有 CONVERSION_IMPLICIT 警告的错误执行计划对性能产生负面影响。 Hier 就是一个例子:

      CREATE TABLE dbo.T(D DATETIME)
      
      --wrong way
      INSERT INTO dbo.T (D) VALUES ('20201231'), ('20201231')
      

      --better way
      INSERT INTO dbo.T (D) VALUES (CAST(N'20201231' AS DATETIME)), (CAST(N'20201231' AS DATETIME))
      

      【讨论】:

        【解决方案5】:
        myConn.Execute "INSERT INTO DayTr (dtID, DTSuID, DTDaTi, DTGrKg) VALUES (" & Val(txtTrNo) & "," & Val(txtCID) & ", '" & Format(txtTrDate, "yyyy-mm-dd") & "' ," & Val(Format(txtGross, "######0.00")) & ")"
        

        在 vb 中使用所有文本类型变量完成。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-09-20
          • 2019-10-06
          • 2018-05-18
          • 1970-01-01
          • 1970-01-01
          • 2016-04-22
          相关资源
          最近更新 更多