2012-04-27 20 views
5

日付を「YYYY-MM-DD」の形式で文字列として返すSQL ServerからのSQLクエリがあります。 この形式の日付をセルに入力すると、日付として認識されます。 しかし、私はCopyFromRecordsetでワークシートを作成すると、文字列として扱われるようです。 セルを使用する数式は、まず日付に変換されます。たとえば、私の日付がcol Aであり、数式= A1 + 0 で満たされた新しい列Bを作成すると、数式は日付として自分の日付を返します。CopyFromRecordsetを実行しているときに文字列ではない日付として日付を扱うためにExcelを取得する方法

問題: 私はRecordsetデータをいくつか使用します.1つはピボットテーブルです。 ピボットテーブルに自分の日付が日付として表示されません。たとえば、日付としてグループ化することはできません。私のハックは、基本的にはA1 = 0の新しい列を作ることです。 これを自動化するためにマクロを変更してゼロを追加するつもりですが、CopyFromRecordsetが実行された瞬間から正しく取得する方法があるのだろうかと思います。

+0

copyfromrecordsetが適用される前に、手動でセルの形式を "DATE"データ型に割り当てようとしましたか? – xQbert

答えて

3

...それはあなたの問題を解決するのに役立ちます願って試すことができますSQLサーバー

SELECT CAST(date_text AS DATE) FROM TestExcelDates; 
+1

ありがとう、これは働いた。 –

+0

注:これは私にとってOracleではうまくいきませんでしたので、Excelで列の数値の書式を変更するだけでした。 – waternova

+0

日付としてのキャスティングがSQL Server上で動作しませんでした。日時計はそのトリックをしました。 – NiH

1

セルにレコードセットの日付を設定する場合は、CDate()関数を使用します。これは、文字列を日付値に変換します。個々のセルの値を設定するために働く

編集

CopyFromRecordsetを使用するには、SQLクエリでconversinoを実行する必要があると思うので、クエリによって返される列は文字列ではなく日付型です。

-1

これはおそらく、答えではありませんが、きっとあなたがここにあなたの問題に適したソリューションを

String stringCellValue = myCell.toString(); 

を見つけることができますでしょうmyCellは私が文字列形式に変換しましたCELLとしてデータ型を持っています。 uは希望形式でそれをしたい場合は、uはthis-

SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD"); 
myCellDate = sdf.parse(stringCellValue); 

が最も簡単な方法は、上の変換を行うことであろう

+0

これはどの言語ですか?確かにVBAではありません... –

2

CopyFromRecordsetは、Excelでデータ型/セルの書式設定の問題が発生する原因としてよく知られています。

レコードセットのデータ型が無視され、Excelがレコードセット内のデータのサブセットに基づいて各列の書式を処理しようとしているため、どこか読んでいると思います。

これを実行する最善の方法は、宛先範囲にセルの書式を設定してからCopyFromRecordsetを実行することです。

0

この問題もTeradataからデータをインポートしていましたが、最初にNumberFormat = "m/d/yy h:mm; @"(24時間の日付)で日付列をフォーマットし、その後VBAでws.cells(iRow、iCol).value = ws.cells(iRow、iCol).valueを実行すると、Excelは文字列を日付/時刻フィールドに再評価します。

2

SQL Serverデータベースのビューを変更した後、この問題が発生しました。データ型をDATEに変更しました。以前はDATEをサポートしていなかった古いバージョンのため、DATETIMEを使用していました。私はExcelが常にSQLOLEDBプロバイダを介して日付のデータ型を認識するとは限りませんが、DATETIMEは認識していると思われます。関心のある分野はです。meas_dateです。そこで、これをキャストSELECT CAST(meas_date AS DATETIME) AS meas_date, ...に変更してビューを変更し、Excelでクエリをリフレッシュしました。働いた!

関連する問題