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

.net 如何将datetime插入SQL数据库表?,.net,sql,sql-server,sql-server-2005,c#-3.0,.net,Sql,Sql Server,Sql Server 2005,C# 3.0,如何将datetime插入SQL数据库表? 有没有办法通过C#/.NET中的insert命令插入此查询?如果您考虑了实际时间GETDATE()将是您要查找的函数,那么您需要在表中设置一列。然后,您可以执行如下插入操作以插入当前日期: INSERT INTO MyTable (MyDate) Values (GetDate()) 如果不是今天的日期,则应能够使用字符串和: 您也不总是需要转换字符串,通常可以执行以下操作: INSERT INTO MyTable (MyDate) Values (

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

如果您考虑了实际时间
GETDATE()
将是您要查找的函数,那么您需要在表中设置一列。然后,您可以执行如下插入操作以插入当前日期:

INSERT INTO MyTable (MyDate) Values (GetDate())
如果不是今天的日期,则应能够使用字符串和:

您也不总是需要转换字符串,通常可以执行以下操作:

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

SQL Server会帮您解决这个问题。

日期时间值应该像字符串一样插入,并用单引号括起来:

'20100301'
SQLServer允许多种可接受的日期格式,大多数开发库都提供了一系列类或函数来正确插入日期时间值。但是,如果您是手动执行此操作,则必须使用
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

SQL Server还识别一种通常以相同方式解释的通用格式:
YYYYMMDD
,例如
20110312

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

Insert Table( DateTimeCol )
Values( CURRENT_TIMESTAMP )

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

日期时间值应插入,就像它们是由单引号包围的字符串一样
'20201231'
但是在许多情况下,它们需要显式转换为datetime
CAST(N'20201231'作为datetime)
以避免错误的执行计划以及对性能产生负面影响的转换隐含警告。Hier就是一个例子:

CREATE TABLE dbo.T(D DATETIME)

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


对吗?您
设置了DateFormat MDY
,但后来您说SQL Server现在假定我的格式为
YYY-MM-DD
。为什么SQL Server不希望您的格式与
Set DateFormat
匹配并查找
MM-DD-YYYY
?我并不是说这是错误的(我不知道),但这似乎是反直觉的。@JerryOL-Set DateFormat MDY只确定SQL如何解释月和日的顺序,而不是确切的格式。你可以自己试试。如果您调用
Set DateFormat DMY
2011-03-12
是12月3日。如果您调用
Set DateFormat MDY
,同一日期是3月12日。@JerryOL-顺便说一句,我也可以使用
YMD
YDM
,并获得相同的效果,但是我发现这些格式只有在您没有通过四位数年份时才有用。在本讨论中,SQL server中解决了日期时间问题
myConn.Execute "INSERT INTO DayTr (dtID, DTSuID, DTDaTi, DTGrKg) VALUES (" & Val(txtTrNo) & "," & Val(txtCID) & ", '" & Format(txtTrDate, "yyyy-mm-dd") & "' ," & Val(Format(txtGross, "######0.00")) & ")"
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))