mysql时间格式函数qustion

q9yhzks0  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(283)

我插入并更新mysql time\u format函数,用时间表示字符串值,
为什么有些数字
“截断的时间值不正确”
错误?
例如,“55”不是查询的问题,但是当输入“188”时,会出现上面的错误消息。
类型为varchar(50)。
我的问题:

INSERT INTO TABLE_HOME (DURATION) 
    VALUES (TIME_FORMAT (# {DURATION, jdbcType = VARCHAR}, '% H:% i:% s'))

UPDATE TABLE_HOME SET DURATION = TIME_FORMAT (# {DURATION, jdbcType = VARCHAR}, '% H:% i:% s')
9vw9lbht

9vw9lbht1#

不是所有整数都有效。。 188 已经不是有效时间了
即使你把它放在哪里:

"%H= Hour => 188?
 %i=Minute => 188?
 %s"=Second => 188?

你觉得呢 188 是的有效时间 Hour, Minute, Second ?

bmp9r5qi

bmp9r5qi2#

time\u format()需要一个时间。如果你用别的东西喂它,你首先要得到一个石膏。在这种情况下:

mysql> SELECT CAST(55 AS TIME), CAST(188 AS TIME);
+------------------+-------------------+
| CAST(55 AS TIME) | CAST(188 AS TIME) |
+------------------+-------------------+
| 00:00:55         | NULL              |
+------------------+-------------------+
1 row in set, 1 warning (0.00 sec)

规则是:
mysql以以下格式识别时间值:
作为“d hh:mm:ss”格式的字符串。您还可以使用以下“宽松”语法之一:“hh:mm:ss”、“hh:mm”、“d hh:mm”、“d hh”或“ss”。这里d表示天数,可以有0到34之间的值。
作为“hhmmss”格式的不带分隔符的字符串,前提是它作为时间有意义。例如,“101112”被理解为“10:11:12”,但是“109712”是非法的(它有一个无意义的分钟部分)并且变成了“00:00:00”。
作为hhmmss格式的数字,前提是它作为时间有意义。例如,101112被理解为“10:11:12”。也可以理解以下替代格式:ss、mmss或hhmmss。
在这种情况下,#3适用于: 55 呈现为 SS 所以它是有效的。 188 不是受支持的格式,因此它生成 NULL .
处理日期和时间已经够难了。我建议:
要明确以避免歧义(比如 23:30:45 是非常清楚的,188是开放的解释)。
不使用 VARCHAR 用于存储日期和时间的列。

相关问题