CREATE TABLE GroovyExps_Tgt
(EMPNO SMALLINT,
FIRSTNAME VARCHAR(20) NOT NULL,
MIDINIT CHAR(1) NOT NULL,
LASTNAME VARCHAR(15) NOT NULL,
SALARY_INT INT,
SALARY_Decimal DECIMAL,
SALARY_Numeric NUMERIC,
SALARY_FLOAT FLOAT(9),
SALARY_MONEY MONEY,
SALARY_SMALLMONEY SMALLMONEY,
BIRTHDATE DATETIME,
HIREDATE_DATETIME DATETIME,
JOIN_TIME TIME,
JOINTIME DATETIME)
insert into GroovyExps_Tgt
values(000010, 'CHRISTINE', 'I', 'HAAS', 52750, 52750.45, 52750.45000045, 52750.45454,
52750, 52750, '1980-08-22', '2014-08-22 10:00:00.000000', '16:00', '2014-08-22 10:00:00.000000')
错误:
Msg 241,Level 16,State 1,Line 1
从字符串转换日期和/或时间时转换失败。
如何成功将数据插入此表?
答案 0 :(得分:1)
您错过了试图在BIRTHDATE
列下插入的数据的时间部分。
如果您没有该值的时间部分,请尝试插入'1980-08-22 00:00:00.00'
而不是1980-08-22
,因为datetime
数据类型需要日期和时间值。
答案 1 :(得分:1)
尝试添加 3 零。它会起作用..
insert into TempGroovyExps_Tgt values(
000010,'CHRISTINE','I','HAAS',52750,52750.45,52750.45000045,
52750.45454,52750,52750,'1980-08-22','2014-08-22 10:00:00.000',
'16:00','2014-08-22 10:00:00.000')
答案 2 :(得分:0)
MS SQL Server支持Datetime
最多1000毫秒。这些查询将解释问题:
select CAST('2014-08-22 10:00:00.000000' as datetime)
select CAST('2014-08-22 10:00:00.000' as datetime)
答案 3 :(得分:0)
试试这个:
insert into GroovyExps_Tgt values(000010,'CHRISTINE','I','HAAS',52750,52750.45,52750.45000045,52750.45454,52750,52750,'1980-08-22 10:00:00','2014-08-22 10:00:00','16:00','2014-08-22 10:00:00')
在 BIRTHDATE 列中将'1980-08-22'
替换为'1980-08-22 10:00:00'
。这意味着您试图在日期时间数据类型中插入带有前导零(.000000)的日期。
<强>更新强> 是的你是对的,但它应该是有道理的。
可能原因是价值中的前导.000000
零,例如&#39; 2014-08-22 10:00:00.000000&#39;,只需将其忽略为&#39; 2014- 08-22 10:00:00&#39;。