2016-09-24 74 views
0

當我插入這段時間'02:02:02 AM' 使用下面的查詢一個MySQL時間字段:截斷不正確的日期值:'02:02:02 AM '

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

+1

['DATE_FORMAT()'](http://dev.mysql.com/doc/refman/5.7 /en/date-and-time-functions.html#function_date-format),如其名稱所示,用於格式化日期,而不是將字符串解析爲日期。你需要的函數是['STR_TO_DATE()'](http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_str-to-date) – axiac

+0

@axiac如果我用str_to_date替換它,它會說:它說'錯誤的日期時間值:'02:02:02 am'for function str_to_date' –

+0

[MySQL的STR_TO_DATE()如果僅用時間組件調用,則返回NULL](http:// stackoverflow .com/questions/38817138/mysqls-str-to-date-returns-null-if-called-only-a-time-component) – Solarflare

回答

1

您是接近,但你應該使用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這裏是小提琴http://sqlfiddle.com/#!9/79e0c9/1

+0

iam使用INSERT語句不是SELECT –

+0

它只是一個例子,只是將'DATE_FORMAT'函數與'str_to_date'在插入查詢 –

+0

它說'不正確的日期時間值:'02:02:02 am'爲函數str_to_date' –

相關問題