如何在 SQL 数据库表中插入日期时间?

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

630759 次浏览

如果你有实际的时间,GETDATE()就是你要找的函数

在表中需要有一个 日期时间列。然后可以执行以下插入操作来插入当前日期:

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

如果它不是今天的日期,那么你应该能够使用字符串和 指定日期格式:

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

您也不必总是转换字符串,通常您可以这样做:

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

SQLServer 会为您解决这个问题。

DateTime 值的插入方式应与单引号包围的字符串类似:

'20100301'

SQLServer 支持许多可接受的日期格式,大多数开发库应该提供一系列类或函数来正确插入日期时间值。但是,如果是手工操作,使用 DateFormat区分日期格式和使用通用格式非常重要:

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


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

通过设置 dateformat,SQLServer 现在假设我的格式是 YYYY-MM-DD而不是 YYYY-DD-MM

设置数据格式

SQLServer 还识别一种通用格式,它总是以相同的方式进行解释: YYYYMMDD,例如 20110312

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

Insert Table( DateTimeCol )
Values( CURRENT_TIMESTAMP )
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 中使用所有文本类型变量。

DateTime 值的插入方式应该与单引号包围的字符串类似 '20201231' 但是 在许多情况下,需要将它们显式强制转换为日期时 CAST(N'20201231' AS DATETIME),以避免带有 CONVERION _ IMPLICIT 警告的错误执行计划对性能产生负面影响。海尔就是一个例子:

CREATE TABLE dbo.T(D DATETIME)


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

Warnings in the execution plan

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

No warnings