如何将datetime插入SQL数据库表?

时间:2011-03-13 04:27:53

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

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

5 个答案:

答案 0 :(得分:106)

应插入DateTime值,就好像它们是由单引号括起来的字符串:

'20100301'

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

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

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

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

SET DATEFORMAT

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

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

Insert Table( DateTimeCol )
Values( CURRENT_TIMESTAMP )

答案 1 :(得分:14)

您需要在表格中添加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会为您解决这个问题。

答案 2 :(得分:8)

如果你得到实际的时间GETDATE()将是你要找的功能

答案 3 :(得分:0)

DateTime 值应该像用单引号括起来的字符串一样插入 '20201231' 但是在许多情况下,它们需要显式转换为日期时间 CAST(N'20201231' AS DATETIME) 以避免带有 CONVERSION_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

答案 4 :(得分:-1)

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中完成。