mysql中的相似於oracle的to_date函數

mysql日期和字符相互轉換方法mysql

date_format(date,'%Y-%m-%d')    -------------->oracle中的to_char();git

str_to_date(date,'%Y-%m-%d')     -------------->oracle中的to_date();sql

%Y:表明4位的年份express

%y:表明2爲的年份oracle

 

%m:表明月, 格式爲(01……12)  spa

%c:表明月, 格式爲(1……12)orm

 

%d:表明月份中的天數,格式爲(00……31)  字符串

%e:表明月份中的天數, 格式爲(0……31) it

 

%H:表明小時,格式爲(00……23)  io

%k:表明 小時,格式爲(0……23)  

%h: 表明小時,格式爲(01……12)  

%I: 表明小時,格式爲(01……12)  

%l :表明小時,格式爲(1……12)

  

%i: 表明分鐘, 格式爲(00……59) 

%r:表明 時間,格式爲12 小時(hh:mm:ss [AP]M)  

%T:表明 時間,格式爲24 小時(hh:mm:ss) 

%S:表明 秒,格式爲(00……59)  

%s:表明 秒,格式爲(00……59)

好比有如下表結構:

mysql> desc logistics_express_trajectory;

+-------------------+--------------+------+-----+---------+-------+

| Field             | Type         | Null | Key | Default | Extra |

+-------------------+--------------+------+-----+---------+-------+

| id                | varchar(32)  | NO   | PRI | NULL    |       |

| longitude         | varchar(32)  | YES  |     | NULL    |       |

| latitude          | varchar(32)  | YES  |     | NULL    |       |

| create_date       | datetime     | YES  |     | NULL    |       |

| modify_date       | datetime     | YES  |     | NULL    |       |

| member_express_id | varchar(32)  | YES  | MUL | NULL    |       |

| loctime           | varchar(32)  | YES  |     | NULL    |       |

| radius            | varchar(16)  | YES  |     | NULL    |       |

| speed             | varchar(16)  | YES  |     | NULL    |       |

| orient            | varchar(16)  | YES  |     | NULL    |       |

| location          | varchar(256) | YES  |     | NULL    |       |

| client_loctime    | datetime     | YES  |     | NULL    |       |

| flag              | int(11)      | YES  |     | NULL    |       |

+-------------------+--------------+------+-----+---------+-------+

其中loctime爲字符串格式的時間,格式爲yyyy-mm-dd hh24:mi:ss,要把每條記錄對應的client_loctime更新爲loctime的date格式,能夠執行如下語句:

update logistics_express_trajectory set client_loctime = str_to_date(loctime, '%Y-%m-%d %H:%i:%s') where loctime is not null;

注意mysql不會對錯誤的格式做檢驗,好比我執行語句(注意紅字部分):

update logistics_express_trajectory set client_loctime = str_to_date(loctime, '%Y-%m-$d %H:%i:%s') where loctime is not null;

mysql也會提示執行完成,但更新後client_loctime是空的,這個問題竟然搞了我十幾分鍾,汗!

相關文章
相關標籤/搜索