2013-07-10 5 views
2

Я работаю над добавлением Excel, получая данные из базы данных SQL Server и вставляя их в Excel.SQL Data reader, возвращающий неверную дату

В базе данных у меня есть дата 2013-06-01 (YYYY-MM-DD)

При чтении из базы данных с помощью SqlDataReader, выполните следующую команду:

myReader.GetValue(c) 

Возвращает 06/01/2013 (ДД-ММ-ГГГГ), когда затем сохраняется в Excel, беря 6 в качестве дня и 1 в качестве номера месяца

Любые идеи, что может быть?

Thanks

+1

Что такое ** тип данных ** - это ваш столбец SQL Server? Это должно быть 'DATE' или' DATETIME', и тогда вы должны иметь возможность правильно читать его с помощью 'myReader.GetDateTime (c)' –

+0

, это dateTime, myReader.GetDateTime (c) все еще возвращает неправильное значение 06/01/2013 – Karl

+0

Когда вы вкладываете его в excel, не можете ли вы просто переформатировать datetime как строку: myReader.GetDateTime (c) .ToString ("yyyy-MM-dd"); – BaconSah

ответ

0

Такое поведение, как представляется, создается с помощью другой конфигурации локализации между SQL Server и Microsoft Excel.

Если вы не можете изменить эту конфигурацию, я предлагаю вам использовать CAST() или CONVERT() для оператора SQL, который используется для извлечения данных.

В примере:

SELECT CONVERT(DATETIME, Date_Column, 103) AS UsingConvertFrom_DDMMYYYY 
FROM TABLE_NAME 

Используя этот подход (т.е. не лучший), вы заставляете значение DataReader.GetValue использовать исходное значение «хорошо проанализированный».

Для получения более подробной информации вы можете проверить документацию MSDN.

+1

проблема перед тем, как дата перейдет в excel, ее в DataReader ошибочно прочитает дату. – Karl

+0

SQL хранит дату как дату, а не строку. – jwg

2

Это может быть проблема с локализацией.
Вы можете установить локализацию в SQL-соединение и систему, над которой работаете, даже спецификация столбца в excel.
Мое лучшее предположение - проверить, правильно ли настроены настройки.

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