Mysql 将字符串数据值转换为日期
大家早上好 我目前有一个MySQL表,其中有3个日期字段(列),以这种格式20140101 YYYYmmdd作为字符串加载。我想将其转换为日期格式2014/01/01 YYYY/mm/dd。请提供一个简单的sql语法,将表格从字符串更改为日期格式,并更改列以显示类似2014/01/01的日期,而不是类似20140101的日期。多亏了所有的试试这个:Mysql 将字符串数据值转换为日期,mysql,string,date,format,Mysql,String,Date,Format,大家早上好 我目前有一个MySQL表,其中有3个日期字段(列),以这种格式20140101 YYYYmmdd作为字符串加载。我想将其转换为日期格式2014/01/01 YYYY/mm/dd。请提供一个简单的sql语法,将表格从字符串更改为日期格式,并更改列以显示类似2014/01/01的日期,而不是类似20140101的日期。多亏了所有的试试这个: date_format(str_to_date(datecolumn, '%Y%m%d'),'%Y/%m/%d') 如果您只想重新格式化VARCH
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
我们希望语句中有一些东西能够防止语句在无意中重新运行时再次“工作”。它不必是字符长度
。我们可能需要检查该值是否已经包含斜杠字符,并且t.mycol与“%/%”不一样。
但究竟为什么“日期”值存储在字符列中,而不是存储在为存储和处理日期值而定制的
date
datatype中
ALTER TABLE mytable MODIFY mycol DATE ... ;
(如果列定义为非空
,有默认值,有注释,这些属性可以保留,它们需要包含在新的列规范中,例如
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
以该格式获取转换为日期数据类型的字符串值
SELECT STR_TO_DATE('2015/06/01','%Y/%m/%d')
MySQL提供了一个数据类型
DATE
,专门用于存储和操作“日期”值。没有“格式”对于日期列本身,但MySQL对日期字符串文本使用默认格式YYYY-mm-dd
,并且在将DATE
转换为VARCHAR
时,MySQL提供函数format_-DATE
和STR_-to-DATE
在DATE
和VARCHAR
之间进行转换,您可以使用字符串值in许多格式,只需提供适当的格式说明符,例如'%Y/%m/%d'
。是否要保留列VARCHAR
,只需更改列的内容,还是要将列转换为DATE
?