mysql - 截断了不正确的日期值 : '02:02:02 am'

标签 mysql sql datetime

当我使用以下查询将时间“02:02:02 am”插入 mysql 时间字段时:

insert INTO invoices(name,phone,totalsum,givenmoney,date,time,moreinfo) VALUES ('f','2','2','2','1994-01-01',DATE_FORMAT('02:02:02 am','%h:%i:%s %p'),'AA')

显示以下错误

Truncated incorrect date value: '02:02:02 am'

如何解决?

并不是说我的时间字段的数据类型是TIMESTAMP

最佳答案

您已经很接近了,但您应该使用 str_to_time 来代替

mysql> select str_to_date('02:02:02 am','%h:%i:%s %p');
+------------------------------------------+
| str_to_date('02:02:02 am','%h:%i:%s %p') |
+------------------------------------------+
| 02:02:02                                 |
+------------------------------------------+
1 row in set (0.00 sec)

我建议使用 time 数据类型来存储时间值 H:i:s 格式 http://dev.mysql.com/doc/refman/5.7/en/time.html 而不是时间戳。

更新: SO 运行查询时出现一些错误 这是在 mysql 5.5 上运行的测试用例

mysql> create table invoices (
    ->    name varchar(30),
    ->    phone varchar(30),
    ->    totalsum varchar(30),
    ->    givenmoney varchar(30),
    ->    date date,
    ->    time time,
    ->    moreinfo varchar(30)
    -> );
Query OK, 0 rows affected (0.13 sec)

mysql> 
mysql> insert INTO invoices
    -> (name,phone,totalsum,givenmoney,date,time,moreinfo) 
    -> VALUES 
    -> ('f','2','2','2','1994-01-01',str_to_date('02:02:02 am','%h:%i:%s %p'),'AA');
Query OK, 1 row affected (0.04 sec)

mysql> select * from invoices ;
+------+-------+----------+------------+------------+----------+----------+
| name | phone | totalsum | givenmoney | date       | time     | moreinfo |
+------+-------+----------+------------+------------+----------+----------+
| f    | 2     | 2        | 2          | 1994-01-01 | 02:02:02 | AA       |
+------+-------+----------+------------+------------+----------+----------+
1 row in set (0.00 sec)

对于 5.6,这里是 fiddle http://sqlfiddle.com/#!9/79e0c9/1

关于mysql - 截断了不正确的日期值 : '02:02:02 am' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39674035/

相关文章:

PHP DateTime __construct() 无法解析位置 x 处的时间字符串 (xxxxxxxx)

python - SQLAlchemy 删除关联对象

postgresql - 从 PSQL 中的字符串中提取年和周数时出现问题

python - 来自mysql的数据类型

php - 插入记录时mysql时间戳显示零

c# - 从 LINQ 查询批量更新?

mysql - 删除表并重新创建表

python - 有效检查值是否存在于任何给定范围内

java - 切换mysql数据库连接

php - 显示数组参数php的mysql查询结果