您是接近,但你應該使用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
['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
@axiac如果我用str_to_date替換它,它會說:它說'錯誤的日期時間值:'02:02:02 am'for function str_to_date' –
[MySQL的STR_TO_DATE()如果僅用時間組件調用,則返回NULL](http:// stackoverflow .com/questions/38817138/mysqls-str-to-date-returns-null-if-called-only-a-time-component) – Solarflare