将字符串数据值转换为日期

时间:2015-06-01 15:50:53

标签: mysql string date format

早安全部;

我目前有一个MySQL表,其中有3个日期字段(列)以20140101 YYYYmmdd格式加载为字符串。我想将此转换为日期格式2014/01/01 YYYY / mm / dd。有人可以提供一个简单的SQL语法,将表格从字符串改为日期格式,并更改列以显示日期,如2014/01/01而不是20140101.感谢所有

2 个答案:

答案 0 :(得分:1)

试试这个:

date_format(str_to_date(datecolumn, '%Y%m%d'),'%Y/%m/%d')

答案 1 :(得分:0)

如果您只想重新格式化VARCHAR列中的值,请假设列具有足够的长度,例如VARCHAR(10),所有值的长度均为八个字符......

你可以这样做:

UPDATE mytable t
   SET t.mycol = CONCAT( LEFT( t.mycol ,4)
                       , '/'
                       , SUBSTR( t.mycol ,5,2)
                       ,'/'
                       , SUBSTR( t.mycol ,7,2)
                      ) 
 WHERE CHAR_LENGTH(t.mycol) = 8 

我们希望语句中的某些内容可以防止语句第二次“正常工作”,如果它无意中重新运行。它不一定是CHAR_LENGTH。我们可能希望检查该值是否已包含斜杠字符AND t.mycol NOT LIKE '%/%'

但是为什么在地球上是“日期”值存储在字符列中,而不是DATE数据类型,这是自定义设计用于存储和使用日期值?

ALTER TABLE mytable MODIFY mycol DATE ... ;

(如果列定义为NOT NULL,具有默认值,有注释,则可以保留这些属性,它们需要包含在新列规范中,例如

ALTER TABLE mytable MODIFY mycol DATE NOT NULL COMMENT 'creation date';

请注意,DATE列本身没有“格式”。转换为字符串时,MySQL使用日期格式'%Y-%m-%d'。 MySQL期望表示日期值的字符串文字采用相同的格式。要将DATE列中的值转换为格式为'yyyy/mm/dd'的字符串。

  SELECT DATE_FORMAT(date_col,'%Y/%m/%d') AS date_col

获取以该格式转换为DATE数据类型

的字符串值
 SELECT STR_TO_DATE('2015/06/01','%Y/%m/%d')