2017-02-27 4 views
0

Ich versuche Abfrage zu erhalten folgenden zu arbeiten, aber 0 Zeilen sind betroffen:ändern MySQL Datumsformat über Update-

UPDATE table_x 
SET sql_date = DATE(STR_TO_DATE(date_string,'%Y-%m-%d')) 
WHERE sql_date = '0000-00-00' 

Das Datumsformat in der Spalte DATE_STRING ist: '% d% m% Y..'

Was mache ich falsch? Danke

+0

"Das Datumsformat in der Spalte DATE_STRING ist:"% d% m% Y.." - Warum verwenden Sie' '% Y-% m-% d' 'in Ihrer Anfrage? –

+0

f .... Ich dachte, ich muss das Zielformat verwenden. Aber das war natürlich eine dumme Idee. Danke für diesen Hinweis. – benny

Antwort

1

Ihre Spalte date_string ist bereits "JJJJ-TT-MM", dann warum Sie aktualisieren möchten. Noch können Sie das Datum des unten vergleichen:

UPDATE table_x set sql_date = DATE(STR_TO_DATE(date_string,'%Y-%m-%d')) 
WHERE date(sql_date) = '0000-00-00'; 

SO wird es Zeitstempel und vergleichen Sie nur Datum mit Ihren Pässen stammen überspringen. Datumsfunktion erhält nur Datum vom gespeicherten Datum. Wenn also "1992-11-06 00:00:00" in DB gespeichert ist, wird nur "1992-11-06" verglichen.

0

Sie sagen date_string ist im Format '%d.%m.%Y'. Sie geben jedoch stattdessen '%Y-%m-%d' für STR_TO_DATE an. Wenn Sie die Zeichenfolge in Datum konvertiert haben, wenden Sie außerdem DATE an diesem Datum an. Warum?

UPDATE table_x 
SET sql_date = STR_TO_DATE(date_string, '%d.%m.%Y') 
WHERE sql_date = '0000-00-00'; 
+0

Danke. Wie Paul Siegel bemerkte. Ich hatte mein kleines Gehirn nicht genug benutzt. – benny