2016-07-28 113 views
1

我有一個小問題,我這就好比遵循插入SQL語句:INSERT EPOCH和UNIX時間戳之間

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

其中一列是EPOCH UNIX時間戳,我希望能夠至2日期間隨機插入內容:因此,例如:

RANDOMIZED INSERT值之間:1469696000和1479996000

我怎麼能做到這一點使用RAND而設定的條件,所以必須要在這些值之間,所以當它的轉換器的這些EPOCH日期之間?

回答

1

你可以試試看:

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

注:

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

編輯:

爲了得到now和本端之間Random unix時間戳年份:

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

因此,這裏是完整的查詢:

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

這並不工作,但問題是,比如我剛剛插入其插入的2282859127的值是在2042年的日期,我需要在一個範圍內EPOCH將介於現在到年底之間? – Speedychuck

+0

請立即檢查。那時我犯了一個錯誤。 – 1000111

+0

謝謝你真棒。 – Speedychuck