2017-08-28 5 views
1

Ich habe eine Spalte in Excel csv mit Werten wie dieserkonvertieren dezimal Seriennummer von excel mysql richtig

42973,74257

Ich will wandeln es in MySQL Datum Zeit unter Verwendung von:

DATE_ADD ('1900-01-01', INTERVAL (42973,74257 * 60 * 60 * 24) Sekunde) als Datum

Allerdings wäre es mir ein falsches Ergebnis

geben

2017-08-28 17: 49: 18,048000

während das richtige Ergebnis sollte

sein

8/26/2017 5:49:18 PM

Es hinzufügen 2 weitere Tage zum Ergebnis. Da ich ungefähr 1M Zeilen habe, würde ich nicht wissen, ob alle Ergebnisse falsch wären.

Haben Sie eine bessere Möglichkeit, Seriennummern von Excel zu MySQL zu konvertieren?

Danke,

H

+0

In MySQL-Daten wird standardmäßig das Format JJJJ-MM-TT verwendet. Sie können mit der Funktion [DATE_FORMAT()] (https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format) anders formatieren. –

+0

Warum glauben Sie, dass der Wert um zwei Tage abweicht? Wenn ich die MySQL-Abfrage 'select to_days ('2017-08-28') - to_days ('1900-01-01') ausprobiere, bekomme ich 42973. –

+0

Es fügt dem Ergebnis 2 weitere Tage hinzu. 8/26 und 8/28. Also ich bin mir nicht sicher, ob die Abfrage würde falsche Ergebnisse für die gesamte Datenbank –

Antwort

3

Ihre Antwort ist um zwei Tage falsch.

Einer dieser Tage ist, weil es tatsächlich behandelt 1. Januar 1900 als , nicht 0 (ref).

Laut this blog post ist es an einem anderen Tag deaktiviert, da Excel das Jahr 1900 fälschlicherweise aus früheren Kompatibilitätsgründen als Schaltjahr behandelt.

Wenn Sie 2 von dem Wert subtrahieren, bevor Sie es in Ihre Formel übergeben, sollte es funktionieren.