2

私はAccessからSQL Serverに変換したvb.netプロジェクトを持っています。SQL Serverでdatetime2をdatetimeに変換する

アクセスでは、すべての日付/時刻フィールドは、明らかにDateTimeとして保存されました。しかし、ここに私の問題があります:

データベースをSQL Server 2008に移行すると、datetimeではなく、datetime2の列として保存されます。これは、datetimeではなく、これらを文字列に変換するため、Crystal Reportsで問題を引き起こしています。

私はテーブルに何百ものレコードを持っているので、それを削除して再設計することはできないので、私が保存したデータを失うことなくdatetime2からdatetimeに列を変更することができますテーブル?

+3

レポートを修正します。データベースを破壊しないでください。これは、Crystal Reportsの100%バグ、またはレポート自体の問題です。 Crystal Reportsが8年間存在するデータ型を処理できないと考えるのは難しいですが、あなたはおそらく非常に古いCRバージョンを使用していますか? –

+1

@PanagiotisKanavosレポートのdatetimeフィールドとして必要です。それらはそのままでは文字列に変換され、式や書式に問題を引き起こします。 – David

+1

私が言ったように、現在のCRバージョンは 'datetime2'を理解できないと信じることは非常に非常に難しいです。 *書式*文字列への変更、またはフィールドタイプへの変更が必要な場合がありますが、それはそれでなければなりません。どのバージョンを使用していますか? –

答えて

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ドライバをAccessで使用し続けるか、Crystal ReportsをSQL Serverのクライアントとして使用する場合、古いドライバを使用すると、そのような列はすべてSTRINGSとして返されます。私はこれを示唆している

2の解決策は以下のとおりです。

ワン:再び 再移行するデータやテーブルが、あなたの前にアップサイズ古い日時書式を使用するようにSSMAのフィールドマッピングを変更データdatetime2とは対照的です。

2つ: レガシーODBCドライバを使用しないでください。ネイティブの10または11のドライバを使用すると、datetime2の列はODBCドライバで実際の日付時刻の列として返されます。これが示唆している唯一の欠点は、これらのネイティブSQL 10または11のドライバがデフォルトではインストールされていないことです。そのため、SQL Serverに接続するAccessフロントエンドの場合、しばしば古いレガシードライバを使用します。そして公平であるためには、古いレガシーSQLドライバは非常に古く、最近ではネイティブの11ドライバを使用することが一般的に推奨されています。

ネイティブの10または11のドライバを使用してこの問題を修正する場合、これらのドライバを各ワークステーションにインストールする必要があります。したがって、クリスタルで新しいSQLドライバを使用すると、この問題が解決されます。

SQL Server側では、各クエリでdate/time2列を古いdatetime形式に「変換」するために、カスタムクエリとビューの作成を開始するのは愚かなことでしょう - 私はこのような提案をここでは無視します。 CRはdatetime2を動作させて使用することができますが、古いSQLドライバを使用する場合は使用できません。単純にネイティブドライバを採用すれば、この問題は解決します。

+0

はい。他の提案を無視して、アルバートに耳を傾け、あなたの選択をしてください。 – Gustav

関連する問題