我插入并更新mysql time_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')
答案 0 :(得分:1)
Time_Format并非所有整数都有效。.
188
不再是有效时间
即使放在它的位置:
"%H= Hour => 188?
%i=Minute => 188?
%s"=Second => 188?
您认为188
是Hour, Minute, Second
的有效时间吗?
答案 1 :(得分:0)
TIME_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)
rules是:
MySQL可以识别以下格式的TIME值:
作为'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
列来存储日期和时间。