web-dev-qa-db-ja.com

SQL ServerのDateTimeフィールドがExcelで正しく表示されない

日中に何度もレコードをSQL Server Management StudioからExcelにコピーして貼り付けています。

私の問題は、8/23/2013 4:51:02 PMなどのDateTime値が、関数ボックスに正しく表示されていても、下の画像に示すように正しく表示されないことです。

enter image description here

データ型をShortDateに変更すると、表示の問題が修正されますが、書式設定する日付フィールドがたくさんあるため、面倒です。 ExcelとSQL ServerはどちらもMicrosoft製品であるため、Excelが日付フィールドを正しく表示できることが期待されます。

編集:したがって、これはExcelの表示の問題のようです。 Management Studioの結果をメモ帳にコピーし、そこからExcelにコピーしても、同じ問題が発生します。 2013-08-23 16:52:11.493をメモ帳からExcelにコピーすると、52:11.5が表示されます(分、秒、および丸められたミリ秒が表示されます)。 Excelバージョンは2010です。

これを簡素化するアイデアはありますか?

50
Andre

また、この問題には、DATETIMEフィールドをSQL Management StudioからExcelにコピーして貼り付けて操作するだけの問題もありました。 ExcelにはDATETIMEの正しい値があります(貼り付け後に書式設定が適用される場合でも)が、既定では、SQL DATETIMEを表示する組み込みの形式はありません。修正方法は次のとおりです。

セルを右クリックして、「セルの書式設定」を選択します。カスタムを選択します。タイプ:入力フィールドに入力します

yyyy-mm-dd hh:mm:ss.000

参照: http://office.Microsoft.com/en-us/Excel-help/create-a-custom-number-format-HP010342372.aspx

80
user2688162

アンドレと同じ問題がありました。直接的な解決策はないようですが、SMALLDATETIMEの制限内であれば、データを生成するクエリ内のCASTが問題を修正します。次のクエリでは、最初の列はExcelで正しくフォーマットされず、2番目の列は正しくフォーマットされません。

SELECT GETDATE()、CAST(GETDATE()AS SMALLDATETIME)

おそらく、DATETIMEおよびDATETIME2の秒の小数部分はExcelを混乱させます。

16
dbuskirk

これは非常に古い投稿ですが、最近問題に遭遇しました。私にとっては、次のようにSQLをフォーマットすることで問題を解決しました。

SELECT CONVERT(varchar、getdate()、120)AS Date

SQL Serverから結果をコピーしてExcelに貼り付けると、Excelには適切な書式が保持されます。

5
MohammedS

カスタム日時フォーマットを覚えて再入力する必要のないソリューションを見つけましたyyyy-mm-dd hh:mm:ss.000

  • 新しいセルに、=NOW()または5/30/2017 17:35のような有効な日付と時刻のいずれかを記述します。言語で正しく表示されます。 5/30/2017 5:35:00 PM
  • セルを選択し、ペインタの書式設定アイコン(ペイントブラシ)をクリックします
  • 次に、フォーマットを適用する列の行ヘッダーをクリックします。

これにより、適切な日時形式が列全体にコピーされ、正しく表示されます。

4

あなたの質問に対する完全な答えではありませんが、選択したセルのフォーマットを日付または時刻に変更するためのショートカットキーがExcelにあります(残念ながら、Date + Timeには見つかりませんでした)。

したがって、日付だけを探している場合は、次のことを実行できます。

  1. SQL Server Management Studioからの範囲のコピー
  2. Excelに貼り付ける
  3. 日付としてフォーマットする必要があるセルの範囲を選択します
  4. Ctrl + Shift + 3を押します

Timesとしてフォーマットするには、Ctrl + Shift + 2を使用します。

これはSQL SERVERで使用できます

SELECT CONVERT(nvarchar(19)、ColumnName、121)AS [変更時] FROMテーブル

3
glancep

以下を試してください。「2004-06-01 00:00:00.000」をExcelに貼り付けます。

「2004-06-01 00:00:00」をExcelに貼り付けてみてください。

Excelは貼り付け時にミリ秒を処理できないようです...

2
jph572

この質問に答えるには遅すぎます。しかし、同じ問題が発生したときに、これをどのように整理したかを共有できればいいと思いました。これが私がしたことです。

  • データをコピーする前に、Excelで列を選択し、「セルの書式設定」を選択して「テキスト」を選択し、「OK」をクリックします(したがって、SQLデータにDateTimeとして3番目の列がある場合、この書式設定をExcelの3番目の列に適用します) Step 1
  • ここで、SQLからExcelにデータをコピーして貼り付けると、日時の値が正しい形式になります。 Step 2
2
user1918553

これは役立つかもしれないハックです...時間値の前にアポストロフィを置くので、SSMSで出力を右クリックして「ヘッダーでコピー」と言ってからExcelに貼り付けると、ミリ秒/ datetime2値のナノ秒。そこにアポストロフィを配置するのは少しbutいですが、Excelで時間の値を不必要に丸めるというフラストレーションよりはましです。日付は英国形式ですが、MSDNのCONVERT関数ページをご覧ください。

SELECT CONVERT(VARCHAR(23)、sm.MilestoneDate、103)AS MilestoneDate、 '' '' + CONVERT(VARCHAR(23)、sm.MilestoneDate、114)AS MilestoneTime FROM SomeTable sm

1
David Barrows

SQL Serverからかなりの数のアドホックレポートを生成し、それらをExcelにコピーして貼り付けると、この同じ問題がしばらく続きました。また、適切なソリューションを歓迎しますが、一時的な回避策は、強調表示されたセルをExcelの日時形式に変換し、それをホットキー(私の場合はShift-Ctrl-D)に割り当てるExcelでデフォルトマクロを作成することでしたそこで、Excelを開き、SSMSから新しいExcelワークシートにコピーして貼り付け、変換する列を強調表示して、Shift-Ctrl-Dを押します。仕事完了。

0
MarkR