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

Converting String Data Value into date

大家早上好;

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

试试这个:

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

如果您只想重新格式化 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 

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


但是 为什么 将 "date" 值存储在字符列中,而不是 DATE 数据类型中,后者是为存储和工作而定制的使用日期值?

ALTER TABLE mytable MODIFY mycol DATE ... ;

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

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

请注意,DATE 列本身没有 "format"。转换为字符串时,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')