sql—如何在mysql中使用时间(分:秒)毫秒)?

mzmfm0qo  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(396)

我有一个表,它遵循以下结构:
表foo

id            time
-----------------------
1           1:30.1234
2           1:29.3874
3           1:03.9123
4           2:11.3847

请注意 time 是一个 varchar(255) .
我想执行一个返回最低值的查询 time 在table上。
为了使这一点,我想投进一些日期变量做的操作。信息 time 具有以下结构: minutes : seconds . milliseconds .
我尝试此查询进行第一次测试,但它返回 NULL :

SELECT UNIX_TIMESTAMP(str_to_date('1:30.1243', '%i:%s.%f'));

我该怎么做?

k4ymrczo

k4ymrczo1#

你的数据是错误的,你最近两次都有错误。不是:
所以用正确的文字

CREATE TABLE foo (
  `id` INTEGER,
  `time` VARCHAR(9)
);

INSERT INTO foo
  (`id`, `time`)
VALUES
  ('1', '1:30.1234'),
  ('2', '1:29.3874'),
  ('3', '1:03.9123'),
  ('4', '2:11.3847');
✓

✓
SELECT MIN(str_to_date(`time`, '%i:%s.%f')) FROM foo;
| MIN(str_to_date(`time`, '%i:%s.%f')) |
| :----------------------------------- |
| 00:01:03.912300                      |
SELECT TIME_TO_SEC(str_to_date(`time`, '%i:%s.%f')) FROM foo;
| TIME_TO_SEC(str_to_date(`time`, '%i:%s.%f')) |
| -------------------------------------------: |
|                                           90 |
|                                           89 |
|                                           63 |
|                                          131 |
SELECT str_to_date(`time`, '%i:%s.%f') FROM foo;
| str_to_date(`time`, '%i:%s.%f') |
| :------------------------------ |
| 00:01:30.123400                 |
| 00:01:29.387400                 |
| 00:01:03.912300                 |
| 00:02:11.384700                 |

db<>在这里摆弄

相关问题