将字符串数据值转换为日期
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')
大家早上好;
我目前有一个 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')