如果MySQL數據庫裡面的某個時間用的是varchar(或者是char)類型的,這樣可以方便系統使用而不用隨便轉換時間類型來適應數據庫版本的不同,當要把取出的字段轉換成時間類型的時候,可以按如下方法操作:
(1)str_to_date
這個函數可以把字符串時間完全的翻譯過來
SQL語句可以這樣寫:
SELECT str_to_date(`tablename`.`eventTime`,'%Y-%m-%d %H:%i:%s') from tablename
數據庫中eventTime的類型是VARCHAR(20),這樣就可以將類型抓換成時間類型。
(2)to_days
就像它的名字一樣,它只能轉換到每一天,就是說一天的時間字符串會被轉換成一個數
轉:
字符串類型轉成時間類型,字符串值必須滿足2010-10-19 17:08:00模式。
SELECT STR_TO_DATE('04/31/2004,13:2:26', '%m/%d/%Y,%H:%i:%s');成功。
注意,模式區分大小寫。
SELECT STR_TO_DATE('2010 - 10 - 19, 17 : 08', '%Y - %m - %d, %H : %i');不成功。
SELECT STR_TO_DATE('2010-10-19,17:08', '%Y-%m-%d,%H:%i');去除所有空格後成功。
SELECT STR_TO_DATE(replace(createTime,' ',''), '%Y-%m-%d,%H:%i') from upload;預先顯示轉換結果。符合預期。
正式轉換如下:
update upload set createTime=STR_TO_DATE(replace(createTime,' ',''), '%Y-%m-%d,%H:%i');
update uzer set createTime=STR_TO_DATE(replace(createTime,' ',''), '%Y-%m-%d,%H:%i');
update hlog set createTime=STR_TO_DATE(replace(createTime,' ',''), '%Y-%m-%d,%H:%i');
再將列定義轉為datetime類型。
另外要注意,mysql只精確到秒而已
注:
%W 星期名字(Sunday……Saturday)
%D 有英語前綴的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 數字, 4 位
%y 年, 數字, 2 位
%a 縮寫的星期名字(Sun……Sat)
%d 月份中的天數, 數字(00……31)
%e 月份中的天數, 數字(0……31)
%m 月, 數字(01……12)
%c 月, 數字(1……12)
%b 縮寫的月份名字(Jan……Dec)
%j 一年中的天數(001……366)
%H 小時(00……23)
%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)
%p AM或PM
%w 一個星期中的天數(0=Sunday ……6=Saturday )
%U 星期(0……52), 這裡星期天是星期的第一天
%u 星期(0……52), 這裡星期一是星期的第一天
%% 一個文字“%”。