2016-07-28 7 views
1

ich ein kleines Problem habe, habe ich eine Insert SQL-Anweisung, die wie wird folgt:INSERT EPOCH und Unix-Timestamp zwischen 2 Terminen

INSERT INTO table (`col`, `col`, `col`) 
    VALUES '1', '2', FLOOR(950000+RAND()*(550000-950000)); 

Eine der Säulen ein EPOCH Unix-Zeitstempel ist, ich möchte in der Lage sein, EINSÄTZE zwischen 2 Terminen rANDOMIZE: so zum Beispiel:

RANDOMISIERTE INSERT Wert zwischen: 1469696000 und 1479996000

wie kann ich diese mit RAND erreichen, aber stellen sie den Zustand, so dass es zwischen diesen Werten sein müssen, damit, wenn sein Konverter seine zwischen diesen EPOCH-Daten?

Antwort

1

Sie können es versuchen:

INSERT INTO table (`col`, `col`, `col`) 
    VALUES '1', '2', (FLOOR(1469696000 + RAND() *(1479996000-1469696000))) 

Hinweis:

(FLOOR(A + RAND() * B)) will return a random number between A and A+B (inclusive) 

EDIT:

Um Random Unix-Zeitstempel zwischen now und Ende dieses zu erhalten Jahr:

(FLOOR(UNIX_TIMESTAMP() + RAND() *(UNIX_TIMESTAMP((CURDATE() - INTERVAL DAYOFYEAR(CURDATE()) DAY) + INTERVAL 1 YEAR) - UNIX_TIMESTAMP()))) 

hier ist also die vollständige Abfrage:

INSERT INTO TABLE (
    `col`, 
    `col`, 
    `col` 
) 
VALUES 
    '1', 
    '2', 
    (
     FLOOR(
      UNIX_TIMESTAMP() + RAND() * (
       UNIX_TIMESTAMP(
        (
         CURDATE() - INTERVAL DAYOFYEAR(CURDATE()) DAY 
        ) + INTERVAL 1 YEAR 
       ) - UNIX_TIMESTAMP() 
      ) 
     ) 
    ) 
+0

Dies funktioniert, aber das Problem ist, zum Beispiel habe ich gerade eingeführt und eingesetztem einen Wert von 2282859127, die in ein Datum 2042 ist Ich brauche einen Bereich in EPOCH zwischen jetzt und dem Ende des Jahres? – Speedychuck

+0

bitte überprüfen Sie jetzt. Ich habe dann einen Fehler gemacht. – 1000111

+0

Danke, du bist großartig. – Speedychuck

Verwandte Themen