2013-10-25 6 views
1

У меня есть данные, которые связаны с SQL Server в документе excel. Формат столбца на SQL Server равен datetime2.MS SQL Server Даты Excel

Когда я получаю данные через соединение ODBC, он встречается как строка?

Я попытался с помощью

CAST(column AS DATE) 

, но это не сработало.

Я попытался переформатирования через

CONVERT(VARCHAR(10), column, 103) 

как хорошо, но это не сработало.

Я попытался получить данные через запрос Microsoft, но это не сработало.

На данный момент я использую VBA код, как:

While (ActiveCell.Value <> "") 
    ActiveCell.Value = DATEVALUE(ActiveCell.Value) 
    ActiveCell.Offset(1,0).Activate 
Wend 

и перекручивания через каждую колонку, которая нуждается в лечении, но это 100000 строк в нескольких столбцах занимает навсегда, чтобы перебрать. Есть ли альтернативы?

+0

Вы могли бы найти это [сообщение] (HTTP: // stackoverflow.com/questions/13578633/sql-string-in-vba-in-excel-2010-with-dates). Если вы придерживаетесь своего текущего метода, убедитесь, что перед вашим циклом установлено 'ScreenUpdating = False'. –

ответ

2

Похоже, что Excel и Access также не похожи на формат datetime2 SQL Server.

Я преобразовал данные в формат даты и времени, и теперь, похоже, работает.

0

Нет необходимости в MACRO, вместо этого мы используем столбцы таблицы Excel.

Любые соединения ODBC в Excel возвращают таблицу. Просто добавьте новый столбец справа от таблицы с расчетом. Это должно выглядеть примерно так = DATEVALUE ([@ DateColumnFromODBC])

Столбец добавит и сжиматься с вашим столом и всегда сохранять это ссылка, пока соединение ODBC остается неизменным.

1

Вы можете просто преобразовать дату в Excel в следующем формате:

"YYYY-MM-DD HH: MM: SS"

Это default ODBC canonical format. В этом случае будет сделано неявное преобразование и будут достигнуты правильные результаты.

Другой способ заключается в попытке выполнить новообращенного, используя другой стиль:

CONVERT (VARCHAR (10), колонка, 120)

Смежные вопросы