반응형
MySQL에 임의 날짜 삽입/업데이트
MySQL을 사용하여 지난 2주 동안 임의의 날짜로 컬럼을 업데이트하려면 어떻게 해야 합니까?
예를 들어 (코드는 실제로 동작하지 않습니다)
UPDATE mytable
SET col = sysdate() - rand(1, 14);
다음 식을 사용하여 임의의 정수를 얻을 수 있습니다.
i <= R < j 의 범위의 랜덤 정수 R 를 취득하려면 , 식을 사용합니다.예를 들어, 7 <= R < 12 의 범위의 랜덤 정수를 취득하려면 , 다음의 문을 사용할 수 있습니다.
SELECT FLOOR(7 + (RAND() * 5));
https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html#function_rand
이를 사용하여 일, 시간 또는 분(해상도마다 다름)을 랜덤하게 생성하고 해당 숫자를 현재 날짜에 추가합니다.
전체 표현은 다음과 같습니다.
-- Date only
SELECT CURRENT_DATE - INTERVAL FLOOR(RAND() * 14) DAY;
-- Date and time
SELECT CURRENT_TIMESTAMP - INTERVAL FLOOR(RAND() * 14 * 24 * 60 *60) SECOND;
UPDATE mytable
SET col = CURRENT_DATE - INTERVAL FLOOR(RAND() * 14) DAY
이 세트는col
현재 날짜 - 13일과 현재 날짜 사이의 날짜로 둘 다 포함하면 총 14일이 됩니다.
당신의 주된 문제는 입니다.RAND()
에서는 지정한 값의 범위를 사용할 수 없습니다.항상 0과 1 사이의 값을 반환합니다.
난 1을 못 풀겠어현재 14개의 랜덤 솔루션을 사용하실 수 있습니다.단, 시작하기 위해 최근 10일 이내에 임의의 날짜가 선택됩니다.
SET col = DATE(DATE_SUB(NOW(), INTERVAL ROUND(RAND(1)*10) DAY))
간단한 옵션 중 하나는 다음 쿼리를 사용하는 것입니다.
UPDATE mytable
SET col = (
NOW() - INTERVAL FLOOR(RAND() * 14) DAY
+ INTERVAL FLOOR(RAND() * 23) HOUR
+ INTERVAL FLOOR(RAND() * 59) MINUTE
+ INTERVAL FLOOR(RAND() * 59) SECOND
);
또는 보다 우아하게:
UPDATE mytable
SET col = (NOW() - INTERVAL FLOOR(RAND() * 14 * 24 * 60 * 60) SECOND);
언급URL : https://stackoverflow.com/questions/4546111/insert-update-random-date-in-mysql
반응형
'programing' 카테고리의 다른 글
Java 8: Java.util.function의 TriFunction(및 kin)은 어디에 있습니까?아니면 대체방법이 뭐죠? (0) | 2022.10.07 |
---|---|
Scheduled Executor Service를 사용하여 매일 특정 시간에 특정 작업을 실행하는 방법 (0) | 2022.10.07 |
스프링 부트 시작 시간 단축 (0) | 2022.10.06 |
4자리 이상의 고유 숫자로 구성된 번호를 일치시키는 방법 (0) | 2022.10.06 |
Python에 Multiline Lambda 없음:왜 안 되나요? (0) | 2022.10.06 |