我正在尝试将日期格式为yyyy / mm的字符串转换为yyyy
STR_TO_DATE(SUBSTRING(time,1,4), '%Y')
对于每个值以及我尝试进行转换而不放弃mm时,这都返回null:
STR_TO_DATE(REPLACE(time,'/',''), '%Y%m')
此方法以前对我有用,对丢失的内容我感到茫然。 预先感谢!
为澄清起见进行编辑: 最终,我将把Year插入到数据类型为year的列中,所以我需要将varchar转换为日期类型,以便提取年份,以便将数据插入到新表中
在确保使用以下命令填充新列之前,我正在确保它能够正常工作:
INSERT INTO table (year)
SELECT STR_TO_DATE(SUBSTRING(time,1,4), '%Y')
FROM `origtable`
答案 0 :(得分:2)
我正在尝试将日期格式为yyyy / mm的字符串转换为yyyy
只需使用left()
:
select left(time, 4) as yyyy
无需转换为日期或日期时间。您需要一个简单的字符串操作。
编辑:
year
是一个非常奇怪的类型。我只用一个整数。但是,如果您使用它,则可以在字段中插入一个完整的日期:
select date(concat(time, '/01'))
结果日期可以插入到year
列中。