我在使用以下代码时遇到问题:
INSERT into `fun` ( funner)
SELECT YEAR(STR_TO_DATE(SUBSTRING(time,1,4), '%Y'))
FROM `orig`
返回警告:
Incorrect datetime value: '1880' for function str_to_date
time
是表 orig
中的 varchar 列,格式为 yyyy/mm
。
我想从此 varchar 中提取年份部分,并使用 STR_TO_DATE
将其转换为年份数据类型
最佳答案
我建议使用 usual date and time MySQL datatypes 之一,而不是很少使用的 YEAR
datatype :DATE
、DATETIME
和 TIMESTAMP
。
如果您想将字符串转换为 date
数据类型,则:
STR_TO_DATE(my_column, '%Y/%m')
您可以在此日期使用YEAR()
函数,它将返回一个整数
值:
YEAR(STR_TO_DATE(my_column, '%Y/%m'))
最后:如果您想要的只是从存储为字符串的日期中获取年份,那么您可以使用 SUBSTR
直接提取字符串:
SUBSTR(my_column, 1, 4)
这将返回一个字符串(不是整数),当在数字上下文中使用时,MySQL 将隐式转换为数字。
关于mysql - SQL STR_TO_DATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54856005/