2011-03-13 47 views

回答

102

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) 
+1

是正确的吗?你'设置DateFormat MDY',但后来你说SQL Server现在假定我的格式是'YYY-MM-DD'。为什么SQL Server不希望你的格式匹配'Set DateFormat'并寻找'MM-DD-YYYY'?我并不是说这是错的(我不知道),但它似乎是反直觉的。 – JerryOL 2011-03-13 21:21:24

+3

@JerryOL - “设置DateFormat MDY”只决定SQL如何解释月份和日期的顺序,而不是确切的格式。你可以自己尝试。如果你调用'Set DateFormat DMY','2011-03-12'是12月3日。如果你调用'Set DateFormat MDY',同一日期是3月12日。 – Thomas 2011-03-13 22:41:11

+2

@JerryOL - 顺便说一句,我也可以使用'YMD'或'YDM'并获得相同的效果,但是我发现这些格式只有在您未通过四位数年份时才有用。 – Thomas 2011-03-13 22:43:43

8

,如果你有一点GETDATE()实际工作时间会是你在寻找什么

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会为你弄明白。

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

相关问题