2014-11-19 7 views
1
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') 

Ошибка:SQL SERVER 2008 Ошибка вставки данных

Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.

Что я должен сделать, чтобы успешно вставить данные в эту таблицу?

+0

Probbaly значение времени не может быть конвертировано, имеющие столько нулей –

+0

Почему вы храните зарплату в столь многих отношениях? Почему бы не сохранить его в качестве денег и быть в порядке с ним? –

+0

Если вы хотите удалить свой вопрос, используйте функцию удаления. Пожалуйста, не деформируйте существующие вопросы. Ваше редактирование было [откат назад.] (Http://stackoverflow.com/posts/27013193/revisions) –

ответ

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

Вы упускаете время часть данных, которые вы пытаетесь вставить под BIRTHDATE колонки.

Попробуйте вставить '1980-08-22 00:00:00.00' вместо просто 1980-08-22, если у вас нет времени части для этого значения, так как тип данных datetime требует как значений даты и времени.

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') 

Заменено '1980-08-22' с '1980-08-22 10:00:00' в BIRTHDATE колонке. Это означает, что вы пытались вставить дату в datetime тип данных с ведущими нулями (.000000).

Обновление: Да, вы правы, но это должно иметь смысл.

Возможно, причина в том, что ведущие нули в значениях, например '2014-08-22 10: 00: 00.000000', просто игнорируют его как '2014-08-22 10:00:00'.

+0

Пожалуйста, объясните **, что вы изменили - и почему! –

+0

Я думаю, не должно быть никаких проблем с введением значения даты в столбец 'datetime'. так что это не причина. –

+0

@ user2315555, ознакомьтесь с моим обновленным ответом. –

1

Попробуйте добавить Зеро .. Это будет работать ..

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') 
Смежные вопросы