2

У меня есть проект vb.net, который я преобразовал из Access на SQL Server.Преобразование datetime2 в datetime в SQL Server

В Access все мои поля даты/времени были сохранены как DateTime, очевидно. Однако вот моя проблема:

Когда я перенес базу данных на SQL Server 2008, она теперь сохраняет их как datetime2, а не datetime. Это вызывает проблемы в Crystal Reports, поскольку оно преобразует их в строки, а не datetime.

У меня есть сотни записей в таблице, поэтому я не могу удалить его и изменить дизайн его, так есть ли другой способ, я могу изменить столбцы из datetime2 в datetime, не теряя при этом данных, которые я сохраненные в стол?

+3

Исправить отчет, не разбивать базу данных. Это 100% ошибка в Crystal Reports или проблема в самом отчете. Хотя мне трудно поверить, что Crystal Reports не может обрабатывать тип данных, который существует в течение 8 лет. Возможно, вы используете очень старую версию CR? –

+1

@PanagiotisKanavos Мне нужны они в качестве полей даты в отчете. Как бы то ни было, он преобразует их в строки, что создает проблемы для формул и форматирования. – David

+1

Как я уже сказал, мне очень, очень и очень сложно поверить, что любая текущая версия CR не понимает 'datetime2'. Возможно, потребуется изменить строку * format * или изменить тип поля, но это должно быть так. Какую версию ты используешь? –

ответ

0

Исправить это было использование запросов в SQL Server.

  • ALTER TABLE table_name ADD new_column datetime
  • SET new_column = old_column
  • ALTER TABLE DROP old_column

Это также может включать в себя необходимость редактирования первичных ключей и т.д. и отношения, но они могут просто быть добавлены прямо назад снова. Наконец, переименуйте новый столбец со старым именем столбца и переместите его в нужное место.

-1

Некоторое время назад у меня была проблема с экспортом дат из Access в импортируемый формат для SQL Server или что-то еще. Access не экспортирует их в правильный формат, который SQL может импортировать, поэтому мне пришлось написать парсер/конвертер, чтобы получить даты в импортируемый формат.

2

Помощник по миграции для Access по умолчанию будет иметь размер до более новых столбцов datetime2.

Если вы продолжаете использовать стандартный (устаревший) SQL-драйвер с доступом или сказать кристальные отчеты как клиент для SQL-сервера, тогда все такие столбцы будут возвращены как STRINGS при использовании более старого драйвера.

два решения я хотел бы предложить, таким образом, является:

One: Re-перенести данные и таблицы снова, но прежде чем вы вверх размера данных изменить отображение полей в СГМЕ использовать старый формат DATETIME в отличие от datetime2.

2: Не используйте устаревший драйвер ODBC. Используйте собственный драйвер 10 или 11, и, таким образом, столбцы datetime2 будут возвращены как фактические столбцы времени даты с драйвером ODBC. Единственным недостатком этого предложения является то, что эти родные драйверы SQL 10 или 11 НЕ установлены по умолчанию, поэтому люди часто используют старые устаревшие драйверы для простоты распространения, особенно для интерфейсов Front Access, которые подключаются к SQL-серверу. И, честно говоря, старый старый драйвер SQL ОЧЕНЬ старый - поэтому в общем мы рекомендуем использовать родной драйвер 11 в эти дни.

При использовании встроенных драйверов 10 или 11 эта проблема будет устранена, эти драйверы должны быть установлены на каждой рабочей станции. Поэтому использование новых драйверов SQL с кристаллом поможет решить эту проблему.

Было бы НЕПРАВИЛЬНЫм глупо начинать писать пользовательские запросы и просматривать сторону SQL-сервера, чтобы «конвертировать» столбцы date/time2 в старый формат даты и времени в каждом запросе - я бы сильно проигнорировал такие предложения, которые плавают здесь. CR может работать и использовать datetime2 - но не при использовании старого драйвера SQL - просто примените родные драйверы, и эта проблема исчезнет.

+0

Да. Игнорируйте другие предложения, послушайте Альберта и сделайте свой выбор. – Gustav

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