die Aktualisierung ein Datum-format in mysql
Ich arbeite an einer Tabelle, die zwei Formate von Daten, gespeichert in einem Feld einige sind in mm/dd/yy und die neueren Einträge sind in yyyy/mm/dd, wie Sie sein sollte.
Möchte ich ausführen einer Abfrage wie dieser
UPDATE table
SET date_field = DATE_FORMAT(date_field, '%Y/%m/%d')
WHERE date_field = DATE_FORMAT(date_field, '%m/%d/%y')
Aber es funktioniert einfach nicht. Ein Ergebnis, das ich bekam war, dass es einfach nur die %m Daten-und drehen Sie es in die %Y und wirklich vermasselt die Daten.
Irgendwelche Gedanken?
was ist die Spalte Art der date_field? wenn es das Datum oder timestamp-Sie können nicht neu anordnen, Ymd, mdy
InformationsquelleAutor Tom Ostlund | 2010-11-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Sie verwenden möchten STR_TO_DATE Funktion, nicht DATE_FORMAT. Plus, ich nehme an, Sie wollen nur ein update der misformed Termine, so dass ich denke, Sie könnten dies tun :
P. S. Tabellen enthalten Spalten, keine Felder. Und Sie sollten nicht verwenden Sie ein string-Typ, um Ihre Daten zu halten, aber das DATUM geben
InformationsquelleAutor Vincent Savard
Den Sie verwenden möchten
STR_TO_DATE
, um zuerst konvertieren Sie die falsche saite zu einem echten date-Objekt, dann nutzen SieDATE_FORMAT
um ihn wieder in einen string der das format, das Sie möchten.Auch, Ihre
WHERE
Zustand nicht wie das funktioniert. Sollten Sie nach Zeichenketten suchen, die das falsche format mitLIKE
.InformationsquelleAutor Ben Lee
Gedanken? Ah ja, eigentlich drei:
das Rad nicht neu erfinden. Ja, ja, ich weiß, es ist verlockend, zu tun, von Grund auf, was nur eine million Menschen erfunden haben, bevor (kein Sarkasmus beabsichtigt), aber MySQL hat eine gute, effiziente und nutzbar
DATE
- format verwenden; nur die Formatierung des input/output. Das können Sie vermeiden, diese Art von mixups von Daten (das Datum selbst) und Präsentation (Datum, format).Als für die Daten-Wiederherstellung der als funktionierend bekannten Sicherung (Sie haben backups, oder?) - im Allgemeinen Fall, es gibt keine narrensicher Weg, zu sagen, nicht umgesetzte y/m/d aus bereits umgesetzten m/d/y, und die Termine sind f***ed, für alle praktischen Zwecke. (vor allem nicht in 2010, z.B.
08/10/09
bedeuten kann mehrere gültige Daten).Auch, welche Art von Idee ist es, speichern nur 2 Ziffern für das Datum? Das ist genau die Art von kurzsichtig penny-pinching gebracht hat, dass über die Zeit - und Geld-versenken, das war Y2K. (vermieden, wenn Sie möchten, speichern Sie das Datum, weißte, in einem Datums-format).
InformationsquelleAutor Piskvor