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