mysql varchar类型转datetime

SELECT
		ship.warship_id AS ship_warship_id,
		record_id,
		replace_time,
		platform,
		give_dept,
		receive_dept,
		record.remark AS record_remark,
		id,
		receive_time,
		repair_time,
		type_id,
		cxdw_id,
		ch.file_id,
		ch.remark AS ch_remark,
		cxdw_name,
		type_code,
		type_name,
		date_format(str_to_date(replace_time,'%Y-%m-%d'),'%Y.%m.%d') AS time_number 
	FROM
		sys_warship ship
		JOIN sys_replace_record record ON record.warship_id = ship.warship_id
		LEFT JOIN sys_ch_record ch ON ch.type_id = ship.warship_id UNION ALL
	SELECT
		ship.warship_id AS ship_warship_id,
		record_id,
		replace_time,
		platform,
		give_dept,
		receive_dept,
		record.remark AS record_remark,
		id,
		receive_time,
		repair_time,
		type_id,
		cxdw_id,
		ch.file_id,
		ch.remark,
		cxdw_name,
		type_code,
		type_name,
		date_format(str_to_date(substring_index(repair_time,'-',1),'%Y.%m.%d'),'%Y.%m.%d') AS time_number 
	FROM
		sys_warship ship
		JOIN sys_ch_record ch ON ch.warship_id = ship.warship_id
		LEFT JOIN sys_replace_record record ON record.warship_id = ch.type_id 
	ORDER BY
	time_number desc 

substring_index(repair_time,'-',1)  -- 截取 第一个-前面的字符串

STR_TO_DATE(replace_time,'%Y%m%d %H:%i:%s')   ---- 转为时间格式

concat( ifNULL(replace_time,''  ) AS time_number  将replace_time 字段的数据复制到time_number  里面

注意:转时间格式的时候要看清楚被转字符串的格式--------以下是详细的函数的表达式

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

%Y:代表4位的年份
%y:代表2为的年份
 
%m:代表月, 格式为(01……12)  
%c:代表月, 格式为(1……12)
 
%d:代表月份中的天数,格式为(00……31)  
%e:代表月份中的天数, 格式为(0……31) 
 
%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) 

参考:https://blog.csdn.net/u013456370/article/details/52487807  写的很细

 

你可能感兴趣的:(mysql)