스포츠 경기 시간 결과 포맷팅을 SQL로 처리하는 방법, 가급적이면 Maria.DB
많은 스포츠/경기에서 소요되는 시간은 일반적으로 다음과 같습니다.1/100th
순식간에, 어떤 사람들은 심지어 까지.1/1000th
순식간에
수영에서 나온 몇 가지 무작위 예는 다음과 같습니다.1/100th
두 번째 정확도(형식)'minutes:seconds,100th of second'
):
50m Backstroke 00:34,12
1500m Freestyle 18:49,02
seconds 필드 뒤의 구분 기호는 쉼표 또는 점일 수 있습니다. 둘 다 전문적인 시간 작업 시스템에서 볼 수 있습니다.
SQL/MariaDB에서 이 포맷은 어떻게 수행되며 어떤 필드 유형을 사용해야 합니까?나는 그것이 사용할 필요가 있다고 생각합니다.1/1000
데이터를 입력할 때 두 번째 정확도를 나타내지만 출력 형식은 다음과 같습니다.1/100th
조회 중에
MySQL/MariaDB를 사용해야 합니다.TIME
.
시간 값의 소수(초)
위의 예는 다음과 같이 수행될 수 있습니다.result TIME(2)
):
CREATE TABLE `swimming_race` (
`swimmer_id` INT (10) unsigned NOT NULL
,`distance` SMALLINT (5) unsigned NOT NULL
,`style` VARCHAR(25) NOT NULL
,`result` TIME(2) NOT NULL
);
INSERT INTO `swimming_race` (
`swimmer_id`
,`distance`
,`style`
,`result`
)
VALUES (
'1'
,'50'
,'Backstroke'
,'0:00:34.12'
)
,(
'1'
,'1500'
,'Freestyle'
,'0:18:49.02'
);
제안해 주셔서 감사합니다.다음을 사용한 형식 지정datetime(2)
이 옵션은 작동하지만 날짜 부분은 필요하지 않습니다.
MariaDB [(none)]> SELECT CONVERT('2019-04-01 00:03:19.3200000',datetime(2));
+----------------------------------------------------+
| CONVERT('2019-04-01 00:03:19.3200000',datetime(2)) |
+----------------------------------------------------+
| 2019-04-01 00:03:19.32 |
+----------------------------------------------------+
1 row in set, 1 warning (0.005 sec)
사용.TIME(2)
제 데이터 유형이 정확했기 때문입니다.
역사적 관심사에서만:MariaDB / MySQL에서 이 기능이 구현된 시기는 언제입니까?저는 5-6년 전에 비슷한 문제를 조사했지만 그 당시에는 이것을 찾을 수 없었습니다 :)
다시 한번 감사합니다 :)
TIME(3)
보관용의
REPLACE(col, ',', '.')
로 전환하기 전에TIME(3)
쉼표가 마침표로 전환되고 변환이 중단되지 않도록 합니다.
mysql> SELECT CONVERT('0:1:23.456', TIME(3));
+--------------------------------+
| CONVERT('0:1:23.456', TIME(3)) |
+--------------------------------+
| 00:01:23.456 |
+--------------------------------+
mysql> SELECT CONVERT('0:1:23,456', TIME(3));
+--------------------------------+
| CONVERT('0:1:23,456', TIME(3)) |
+--------------------------------+
| 00:01:23.000 | -- lost fraction because of comma
+--------------------------------+
1 row in set, 1 warning (0.00 sec)
mysql> SHOW WARNINGS;
+---------+------+----------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '0:1:23,456' |
+---------+------+----------------------------------------------+
완료된 예:
mysql> SELECT CONVERT(REPLACE('0:1:23,456', ',', '.'), TIME(3));
+---------------------------------------------------+
| CONVERT(REPLACE('0:1:23,456', ',', '.'), TIME(3)) |
+---------------------------------------------------+
| 00:01:23.456 |
+---------------------------------------------------+
mysql> SELECT CONVERT(REPLACE('0:1:23,456', ',', '.'), TIME(3)) with_comma;
+--------------+
| with_comma |
+--------------+
| 00:01:23.456 |
+--------------+
mysql> SELECT CONVERT(REPLACE('0:1:23.456', ',', '.'), TIME(3)) with_dot;
+--------------+
| with_dot |
+--------------+
| 00:01:23.456 |
+--------------+
mysql> SELECT CONVERT(REPLACE('0:1:23.45', ',', '.'), TIME(3)) with_2_digits;
+---------------+
| with_2_digits |
+---------------+
| 00:01:23.450 |
+---------------+
언급URL : https://stackoverflow.com/questions/55450739/how-to-handle-sport-race-time-results-formatting-in-sql-preferrably-mariadb
'programing' 카테고리의 다른 글
jQuery UI 대화 상자 위치 지정 (0) | 2023.08.19 |
---|---|
일반 CSS 미디어 쿼리 중단점 (0) | 2023.08.19 |
정적 방법으로 스프링 빈에 액세스 (0) | 2023.08.19 |
코드 점화기를 사용하여 리디렉션 (0) | 2023.08.19 |
C# MVC 컨트롤러가 Ajax POST 요청에서 십진수 또는 이중 값을 가져올 수 없습니다. (0) | 2023.08.19 |