it-swarm.com.de

DateTime-Felder von SQL Server werden in Excel falsch angezeigt

Unzählige Male während des Tages kopiere und füge ich Datensätze aus SQL Server Management Studio in Excel ein. 

Mein Problem ist, dass ein DateTime-Wert wie 8/23/2013 4:51:02 PM nicht richtig angezeigt wird, wie in der Abbildung unten gezeigt, obwohl er im Funktionsfeld korrekt angezeigt wird. 

enter image description here

Das Ändern des Datentyps in ShortDate behebt die Anzeigeprobleme. Es ist jedoch langwierig, da viele Datumsfelder formatiert werden müssen. Da Excel und SQL Server beide Microsoft-Produkte sind, könnte man erwarten, dass Excel das Datumsfeld korrekt anzeigen kann.

BEARBEITEN: Dies scheint ein Anzeigeproblem in Excel zu sein. Ich habe meine Management Studio-Ergebnisse in Notepad und von dort in Excel kopiert, und ich bekomme immer noch das gleiche Problem. Wenn Sie 2013-08-23 16:52:11.493 aus Notepad in Excel kopieren, wird 52:11.5 angezeigt (Minuten, Sekunden und gerundete Millisekunden). Excel-Version ist 2010.

Ideen zur Vereinfachung?

48
Andre

Ich hatte auch ein Problem mit diesem Problem, indem Sie einfach DATETIME-Felder aus SQL Management Studio zur Bearbeitung in Excel kopieren und einfügen. Excel hat den korrekten Wert von DATETIME (auch wenn die Formatierung nach dem Einfügen angewendet wird). Standardmäßig ist jedoch kein integriertes Format für die Anzeige von SQL-DATETIME vorhanden. Hier ist der Fix:

Klicken Sie mit der rechten Maustaste auf die Zelle und wählen Sie Zellen formatieren. Wählen Sie Benutzerdefiniert. Geben Sie im Eingabefeld Typ: ein.

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

Referenz: http://office.Microsoft.com/de-de/Excel-help/create-a-custom-number-format-HP010342372.aspx

72
user2688162

Ich hatte das gleiche Problem wie Andre. Es scheint keine direkte Lösung zu geben, aber ein CAST in der Abfrage, die die Daten generiert, behebt das Problem, solange Sie innerhalb der Einschränkungen von SMALLDATETIME leben können. In der folgenden Abfrage wird die erste Spalte in Excel nicht korrekt formatiert, in der zweiten.

SELECT GETDATE (), CAST (GETDATE () ALS SMALLDATETIME)

Vielleicht verwirrt der Bruchteil der Sekunden in DATETIME und DATETIME2 Excel.

10
dbuskirk

Obwohl es keine vollständige Antwort auf Ihre Frage gibt, gibt es in Excel Tastenkombinationen, um die Formatierung der ausgewählten Zellen in Datum oder Uhrzeit zu ändern (leider habe ich für Datum + Uhrzeit keine gefunden).

Wenn Sie also nur nach Datum suchen, können Sie Folgendes ausführen:

  1. Bereich aus SQL Server Management Studio kopieren
  2. Einfügen in Excel
  3. Wählen Sie den Zellenbereich aus, den Sie als Datumsangaben formatieren müssen
  4. Ctrl + Shift + 3 drücken

Verwenden Sie für die Formatierung als Uhrzeit Ctrl + Shift + 2.

Sie können dies in SQL SERVER verwenden 

SELECT CONVERT (nvarchar (19), ColumnName, 121) AS [Geändert am] FROM-Tabelle

3
glancep

Eine Lösung gefunden, bei der das benutzerdefinierte datetime-Format nicht gespeichert und erneut eingegeben werden muss yyyy-mm-dd hh:mm:ss.000 

  • Schreiben Sie in eine neue Zelle entweder =NOW() oder ein gültiges Datum + Uhrzeit wie 5/30/2017 17:35: Es wird in Ihrer Sprache korrekt angezeigt, z. 5/30/2017 5:35:00 PM
  • Wählen Sie die Zelle aus und klicken Sie auf das Symbol Format Painter (den Pinsel).
  • Klicken Sie nun auf den Zeilenkopf der Spalte, für die Sie das Format anwenden möchten. 

Dadurch wird ein korrektes Datums-/Uhrzeitformat in die gesamte Spalte kopiert, sodass es korrekt angezeigt wird.

3

Dies ist ein sehr alter Beitrag, aber ich bin vor kurzem auf das Problem gestoßen und für mich wurde das Problem durch folgende Formatierung der SQL gelöst 

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

Wenn Sie das Ergebnis aus SQL Server kopieren und in Excel einfügen, behält Excel die korrekte Formatierung bei. 

2
MohammedS

Ich weiß, es ist zu spät, um diese Frage zu beantworten. Aber ich dachte, es wäre trotzdem schön zu berichten, wie ich das Problem gelöst habe, als ich das gleiche Problem hatte. Hier ist was ich getan habe.

  • Wählen Sie vor dem Kopieren der Daten die Spalte in Excel und dann 'Zellen formatieren' aus. Wählen Sie 'Text' und klicken Sie auf 'OK'. (Wenn Ihre SQL-Daten die dritte Spalte als DateTime haben, dann wenden Sie diese Formatierung auf die dritte Spalte in Excel an )  Step 1
  • Kopieren Sie nun die Daten aus SQL in Excel und fügen Sie sie in Excel ein. Der Wert für datetime würde dann im korrekten Format liegen  Step 2
2
user1918553

Hier ist ein Hack, der möglicherweise hilfreich ist ... er setzt einen Apostroph vor den Zeitwert. Wenn Sie also mit der rechten Maustaste auf die Ausgabe in SSMS klicken und "Mit Kopfzeilen kopieren" wählen, dann in Excel einfügen, bleiben die Millisekunden erhalten. Nanosekunden für datetime2-Werte. Es ist etwas hässlich, dass der Apostroph dort platziert wird, aber es ist besser als die Frustration, wenn man mit Excel umgeht und unerwünschte Rundungen beim Zeitwert vornimmt. Das Datum ist ein UK-Format, Sie können jedoch die Seite CONVERT-Funktion in MSDN aufrufen.

WÄHLEN CONVERT (VARCHAR (23), sm.MilestoneDate, 103) AS MilestoneDate, '' '' + CONVERT (VARCHAR (23), sm.MilestoneDate, 114) AS MilestoneTime FROM SomeTable sm

1
David Barrows

Versuchen Sie Folgendes: Fügen Sie "2004-06-01 00: 00: 00.000" in Excel ein.

Versuchen Sie nun "2004-06-01 00:00:00" in Excel einfügen.

Excel scheint beim Einfügen nicht in der Lage zu sein, Millisekunden zu verarbeiten ...

1
jph572

Ich hatte das gleiche Problem schon eine Weile, da ich eine ganze Reihe von Ad-hoc-Berichten von SQL Server generiere und sie in Excel kopiere/einfügen würde .. Ich würde auch eine richtige Lösung begrüßen, aber meine temporäre Problemumgehung bestand darin, eine Standardmakro in Excel, das markierte Zellen in das datetime-Format von Excel konvertiert und einem Hotkey (in meinem Fall Shift-Ctrl-D) zuweist .. .. So öffne ich Excel, kopiere/füge ich aus SSMS in ein neues Excel-Arbeitsblatt ein, markieren Sie die zu konvertierende Spalte und drücken Sie die Tastenkombination Umschalt-Strg-D. Job erledigt.

0
MarkR