데이터베이스에 밀리 초로 시간 저장


10

데이터베이스에 "시간"을 저장하는 것과 관련된 간단한 질문입니다. 00 : 00 : 00 : 00 (시간, 분, 초, 밀리 초) 형식의 사용자 실행 시간을 기록하고 있습니다.

원래는 그대로 저장하려고 TIME했지만 MySQL 이이 유형의 밀리 초를 지원하지 않는다는 것을 깨달았습니다.

나는 사용자가 스톱워치에서 얻은 실제 시간을 저장하고 실행할 때가 아닌 시간을 저장합니다 (삽입되기 전에 계산됩니다).

가장 적합한 필드 유형은 무엇입니까? double또는 중 하나를 생각하고 float있었지만 그게 효과가 있는지 확실하지 않습니까?

답변:


6

개인적으로 정수 기간지속 기간 동안 사용합니다.

예 : 부호없는 int 열에서 340,000 밀리 초는 340000입니다.

나에게 datetime, time, date 등은 명시적인 시점입니다. 그 맥락에서 340 초는 의미가 없습니다. 시작을 갖는 date/time허용 지속하는 것은 물론 추가 할


3
interval이 목적을위한 표준 SQL 데이터 유형이 있습니다. 그러나 모든 DBMS (그리고 MySQL이 아닌)가 이것을 지원하는 것은 아닙니다.
a_horse_with_no_name

답장을 보내 주셔서 감사합니다. 현재 형식이 00 : 00 : 00 : 00 인 표준 형식으로 변환해야합니까? 해당 형식의 형식을 허용하도록 열을 설정할 수 있습니까?
Elliott

@Elliott : 표시 할 수 있습니다. 다른 숫자 일뿐입니다
gbn

1
형식은 아마도 00 : 00 : 00.000 일 것입니다 (콜론 대신 점으로 표시하고 밀리 초 동안 3 자리를 기록하십시오)
Jannes

2

측정하려는 시간에 따라 다릅니다. 2 ^ 32보다 길거나 4294967296ms보다 긴 시간을 기록하지 않으면 일반 부호없는 int보다 좋습니다. 약 50 일의 시계 시간에 해당합니다 (btw).

유닉스 타임 스탬프 또는 더 큰 간격을 저장하는 경우 bigint를 사용하십시오. 이는 8 바이트의 공간을 제공하거나 1.84467440737096e + 19ms (약 5 억 년)의 시간을 기록 할 수있는 기능을 제공합니다.


1

MySQL 5.6.4 이상을 사용하는 경우 TIME(3), DATETIME(3)TIMESTAMP(3)열 유형을 사용하여 최대 6 개의 소수 자릿수를 저장할 3수 있습니다 (필요한 소수 자릿수로 대체 ). 분수 부분은 점 다음에 시간 문자열에 추가됩니다. 예 : 2018-09-08 17:51:04.781.

공식 참조

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.