Blog


Zufallsdatum und Uhrzeit in der DB

  • 12.04.2017
  • SQL
  • random
  • datetime
  • date
  • time
Auf Development- oder Testsystemen kann es vorkommen, dass man zwar genügend Daten hat, diese aber nicht aktuell sind. Als Beispiel man hat 10.000 Objekte, jedoch ist deren Erstellungsdatum schon einige Wochen alt. Um nun eine neue Funktion, z. B. sortieren nach den neusten Einträgen testen zu können, empfiehlt es sich das Erstellungsdatum in der Datenbank zu aktualisieren. Dies ist mit folgendem Kommando leicht möglich.
UPDATE object SET created = NOW() - INTERVAL FLOOR(RAND() * 14) DAY;
Dabei wird das Feld created jedes Objekts mit einem Zufallsdatum aktualisiert und der Zeitraum beträgt die letzten 14 Tage. Dieser SQL-Befehl ist leicht auf einen belieben Zeitraum ausdehnbar. Will man z. B. die letzten 28 Tage habe, so einfach 14 durch 28 ersetzen.
Ein kleines Problem hat dieses Update-Kommando, die Einträge haben alle die gleiche Uhrzeit. Soll auch die Zeit dynamisch generiert werden, dann muss der Befehl etwas ausgebaut werden. Mit folgendem Kommando klappt es nun auch mit der Zufallszeit.
UPDATE object SET created = NOW() -
INTERVAL FLOOR(RAND() * 14) DAY -
INTERVAL FLOOR(RAND() * 12) HOUR -
INTERVAL FLOOR(RAND() * 60) MINUTE -
INTERVAL FLOOR(RAND() * 60) SECOND;
Mit dem letzten SQL-Befehl kann man die Datentypen DATETIME, DATE bzw. TIME befüllen und hat immer neue Daten.