2016-11-13 3 views
1

Я конвертирую Google Sheet в SQL database table. Когда он загружает Excel sheet (я копирую данные Google Sheet в Excel и импортирую его) SQL изменяет некоторые типы данных. У меня есть столбец в моем Excel sheet, который является датой, когда SQL конвертируется в nvarchar. Когда я пытаюсь convert его обратно к date data type, я получаю эту ошибку:Преобразование типов данных

"Conversion failed when converting date and/or time from character string."

Мой код кажется правильным ... Я вам покажу.

USE Sample 
ALTER TABLE ['RM Item List$'] 
ALTER COLUMN [Kosher Cert] date 

Может кто-нибудь дать мне понять, почему это не работает? Я знаю, что вопросы о data conversion были заданы ad nausea, но я не видел ответа, который помог мне решить мою проблему. SQL преобразовал мои даты в колонке Кошерный сертификат в strings из пяти номеров. Любая помощь будет оценена по достоинству.

+0

Пожалуйста, укажите образец данных, хранящихся в поле '[Kosher Cert]', вы говорите, что это числа, а также дату, которая, по вашему мнению, должна быть. – mendosi

+0

Хорошо, пример. Поле Kosher Cert - это дата кошерной сертификации продуктов на моей работе. SQL преобразован с 1/31/2017 по 47266. Он изменил формат даты на nvarchar. Другой пример ... SQL изменился с 12/31/2016 по 42735 в другой строке. – Ethan

+0

Excel хранит даты в виде чисел, http://excel.officetuts.net/en/training/how-excel-stores-date-and-time, похоже, что внутренний номер Excel, который записывается в вашу таблицу (предположим, что 31 января 2017 года на самом деле 42766 не 47266, как вы набрали). Поскольку это, кажется, имеет место, то я думаю, что мой ответ должен быть вашим лучшим способом продвижения вперед. – mendosi

ответ

0

Это родственная тема может быть полезна: T-SQL to convert Excel Date Serial Number to Regular Date

Это, вероятно, разумнее всего добавить столбец в таблицу с типом даты, заполнить ее, а затем падение nvarchar колонки:

ALTER TABLE ['RM Item List$'] ADD [KosherCert] date; 
UPDATE ['RM Item List$'] 
    SET [KosherCert] = DateAdd(Day, Convert(int, [Kosher Cert]), '1899-12-30'); 
Смежные вопросы