2016-07-28 86 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