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

76

我该如何将日期时间插入SQL数据库表中? 在C# / .NET中是否有通过插入命令插入此查询的方法?


1
在这个讨论中解决了SQL服务器中的日期时间问题。https://dev59.com/7Gcs5IYBdhLWcg3wTyNl#12957690 - oaamados
5个回答

114

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

'20100301'

SQL Server支持多种可接受的日期格式,大多数开发库都应该提供一系列类或函数来正确插入datetime值。但是,如果您正在手动执行此操作,则重要的是使用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 )

1
这是正确的吗?你设置了日期格式为MDY,但之后又说SQL Server现在假定我的格式为YYY-MM-DD。为什么SQL Server不期望您的格式与“Set DateFormat”匹配并寻找MM-DD-YYYY呢?我不是说这是错的(我不知道),但它似乎不符合直觉。 - JerryOL
3
@JerryOL - Set DateFormat MDY 只决定了 SQL 如何解释月份和日期的顺序,而不是确切的格式。你可以自行尝试。如果你调用 Set DateFormat DMY,则 2011-03-12 代表的是 12月3日。如果你调用 Set DateFormat MDY,那么同一天就是 3月12日。 - Thomas
2
@JerryOL - 顺便说一下,我也可以使用 YMDYDM 并实现相同的效果,但我发现这些格式仅在您未传递四位数年份时才有用。 - Thomas

15
你需要在一个表中拥有一个 datetime 列。然后你可以执行以下插入语句以插入当前日期:
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') 

而 SQL Server 会为您自动解决。


8

如果你需要实际时间,GETDATE()是你要寻找的函数。


0

日期时间值应该被插入为字符串,用单引号括起来 '20201231' 但是在许多情况下,它们需要被显式地转换为datetime 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


-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完成,所有文本类型变量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接