밀리 초 정밀도의 타임 스탬프 : MySQL에 저장하는 방법
MySQL을 사용하여 애플리케이션을 개발해야하고 타임 스탬프를 나타내는 "1412792828893"과 같은 값을 밀리 초의 정밀도로 저장해야합니다. 즉, 1.1.1970 이후의 밀리 초입니다. 나는 행을 선언 timestamp
하지만 불행히도 이것은 작동하지 않았습니다. 모든 값이0000-00-00 00:00:00
CREATE TABLE IF NOT EXISTS `probability` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`segment_id` int(11) NOT NULL,
`probability` float NOT NULL,
`measured_at` timestamp NOT NULL,
`provider_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ;
이 정밀도로 타임 스탬프 값을 저장할 수 있으려면 어떻게 선언해야합니까?
분수 초 시간 데이터 유형으로 열을 선언하려면 MySQL 버전 5.6.4 이상이어야합니다. 올바른 버전인지 확실하지 않습니까? 시도해보십시오 SELECT NOW(3)
. 오류가 발생하면 올바른 버전이없는 것입니다.
예를 들어 DATETIME(3)
는 타임 스탬프에서 밀리 초 해상도를 TIMESTAMP(6)
제공하고 * nix 스타일 타임 스탬프에서 마이크로 초 해상도를 제공합니다.
이것을 읽으십시오 : https://dev.mysql.com/doc/refman/8.0/en/fractional-seconds.html
NOW(3)
밀리 초 단위로 MySQL 서버의 운영 체제에서 현재 시간을 제공합니다.
Unix epoch 이후 몇 밀리 초가 지난 경우 DATETIME (3) 값을 얻으려면 이것을 시도하십시오.
FROM_UNIXTIME(ms * 0.001)
예를 들어 자바 스크립트 타임 스탬프 는 Unix epoch 이후 밀리 초 단위로 표시됩니다 .
(와 같은 MySQL 내부 분수 산술 * 0.001
은 항상 IEEE754 배정 밀도 부동 소수점으로 처리되므로 태양이 백색 왜성이되기 전에 정밀도를 잃지 않을 가능성이 높습니다.)
이전 버전의 MySQL을 사용하고 있고 1 초 미만의 정밀도가 필요한 경우 가장 좋은 방법은 업그레이드하는 것입니다. 다른 것은 당신이 지저분한 해결 방법을하도록 강요 할 것입니다.
어떤 이유로 업그레이드 할 수없는 경우 BIGINT
또는 DOUBLE
열을 사용하여 Javascript 타임 스탬프를 숫자처럼 저장하는 것을 고려할 수 있습니다. FROM_UNIXTIME(col * 0.001)
여전히 정상적으로 작동합니다. 이러한 열에 저장할 현재 시간이 필요하면 다음을 사용할 수 있습니다.UNIX_TIMESTAMP() * 1000
'Development Tip' 카테고리의 다른 글
로컬 파일의 존재를 어떻게 확인합니까? (0) | 2020.11.11 |
---|---|
scipy 버전을 확인하는 방법 (0) | 2020.11.11 |
.NET Core에 AppDomain이 없습니다! (0) | 2020.11.11 |
Aurelia 델리게이트 대 트리거 : 언제 델리게이트 또는 트리거를 사용해야하는지 어떻게 알 수 있습니까? (0) | 2020.11.11 |
다중 세트, 맵 및 해시 맵 복잡성 (0) | 2020.11.11 |