STR_TO_DATE返回null

时间:2019-02-24 04:17:44

标签: mysql sql

我正在尝试将日期格式为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`

1 个答案:

答案 0 :(得分:2)

  

我正在尝试将日期格式为yyyy / mm的字符串转换为yyyy

只需使用left()

select left(time, 4) as yyyy

无需转换为日期或日期时间。您需要一个简单的字符串操作。

编辑:

year是一个非常奇怪的类型。我只用一个整数。但是,如果您使用它,则可以在字段中插入一个完整的日期:

select date(concat(time, '/01'))

结果日期可以插入到year列中。