![](/img/trans.png)
[英]how to convert and update japanese date format into real datetime format in mysql
[英]convert date into mysql datetime format
我在 csv 數據中有以下格式的日期時間
In_Time
1/1/17 1:07 AM
1/1/17 12:59 PM
我無法使用包含上述值的列加載數據。 所以我為 In_Time 列加載了文本格式的數據,我試圖使用 STR_TO_DATE() function 現在將該列轉換為 mysql 中的日期時間列。
我正在嘗試下面的代碼,但它給了我錯誤:
Incorrect datetime value: '1/1/17 12:27 AM' for function str_to_date
UPDATE mytable
SET In_Time = STR_TO_DATE(ED_Arrival_Time, '%d/%m%y %h: %i: %p');
請幫忙。
沒有像下午 12:59 這樣的時間,但是考慮到 str_to_date https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format的正確格式選項傳遞的日期結果將是 null 並且不會引發錯誤
DROP TABLE IF EXISTS T;
create table t
( ED_Arrival_Time varchar(20), In_Time datetime);
insert into t values
('1/1/17 1:07 AM',null),('1/1/17 11:59 PM',null),('1/1/17 23:59 PM',null);
select ED_Arrival_Time, str_to_date(ed_arrival_time,'%d/%m/%y %h:%i %p')
from t;
+-----------------+--------------------------------------------------+
| ED_Arrival_Time | str_to_date(ed_arrival_time,'%d/%m/%y %h:%i %p') |
+-----------------+--------------------------------------------------+
| 1/1/17 1:07 AM | 2017-01-01 01:07:00 |
| 1/1/17 11:59 PM | 2017-01-01 23:59:00 |
| 1/1/17 23:59 PM | NULL |
+-----------------+--------------------------------------------------+
3 rows in set, 1 warning (0.001 sec)
期望所有傳入的日期都采用相同的格式 - 如果不是,那么您需要清理它們。
BTW load data infile can manipulate data loading from a csv file see the section Input Preprocessing in the manual https://dev.mysql.com/doc/refman/8.0/en/load-data.html
作為一般原則,最好將問題分解為導致問題的最小部分並解決它。 在這種情況下,我認為這是STR_TO_DATE()
function 的格式說明符。
查找格式說明符列表: https://www.w3schools.com/sql/func_mysql_str_to_date.asp
打開一個 MySQL 終端,然后用你的一些字符串迭代地嘗試它,直到你得到正確的格式說明符字符串,它應該是這樣的:
select str_to_date('1/1/17 1:07 AM', '%e/%c/%y %I:%i %p') as test_date_parse;
然后使用正確的日期說明符調整您的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.