2010-02-23 70 views
3

我有场:问题与SQL Server smalldatetime的插入查询

APP_DATE (smalldatetime) 

我在做这个查询:

INSERT INTO table (TYPE, CODE, APP_DATE, DATE) VALUES ('APP', '123', '02/10/2010 12.30', GETDATE()) 

它失败:

Msg 296, Level 16, State 3, Line 1 
Conversion from datatype char to smalldatetime generated a value not between the interval of valid values. 
Instruction has been interrupted. 

(0 row(s) affected) 

我在做什么错误?在我看来,作为该领域的正确格式..

谢谢您的时间。

编辑:SQL Server 2000中

回答

4

在你的时间,而不是.只需使用:。然后它会插入罚款。

+0

仍然没有工作: '02/19/2010 16:28'< - 相同的错误 – 0plus1 2010-02-23 15:00:13

+0

@ 0plus1:工作对我来说很好..... – 2010-02-23 15:14:34

+0

啊,我有SQL Server 2005.也许这就是问题所在。尝试更改日期的格式,也许'2010-19-02 16:28'?或许你已经得到了错误的区域设置,它认为19月份? – 2010-02-23 15:17:42

2

的日期时间格式不正确;年应为4位(否则它是不明确的)和时间分离器应该是一个冒号。

2003年1月22日22:31将工作。见this article

0

如果您不需要领域的SQL Server将默认为00:00:00您在时间因素,如果你只是在'02 /二千零十分之一十发送' 如果需要,则时间元素您的格式你的例子中的时间是错误的,它应该是这样的 - '02/10/2010 12:31:00'

5

你可以尝试使用ISO-8601 date format(YYYYMMDD HH:MM:SS) - 这会SQL Server上总是工作 - 无论区域和区域设置:

INSERT INTO table (TYPE, CODE, APP_DATE, DATE) 
VALUES ('APP', '123', '20100210 12:30:00', GETDATE()) 
1

INSERT INTO yourTable(yourSmallDateTimeColumn)VALUES( '1900-01-01 11点45分23秒'); //格式“YYYY-MM -dd HH:mm:ss“