簡體   English   中英

將日期轉換為 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM