我插入并更新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')
2条答案
按热度按时间9vw9lbht1#
不是所有整数都有效。。
188
已经不是有效时间了即使你把它放在哪里:
你觉得呢
188
是的有效时间Hour, Minute, Second
?bmp9r5qi2#
time\u format()需要一个时间。如果你用别的东西喂它,你首先要得到一个石膏。在这种情况下:
规则是:
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
用于存储日期和时间的列。