SQL STR_TO_DATE
SQL STR_TO_DATE
我在使用以下代码时遇到问题:
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
是 table orig
中的一个 varchar 列,格式为 yyyy/mm
.
我想从此 varchar 中提取年份部分并使用 STR_TO_DATE
将其转换为年份数据类型
您可以将 SUBSTRING(time,1,4)
转换为整数:
SELECT CONVERT(SUBSTRING(time,1,4),UNSIGNED INTEGER) FROM orig
无需先转为日期再转为整数
我猜你需要 return 一个整数值,因为你使用了 YEAR() 函数。
如果不是简单的 SELECT SUBSTRING(time,1,4) FROM orig
就可以了。
我建议使用 usual date and time MySQL datatypes, instead of the rarely used YEAR
datatype 之一:DATE
、DATETIME
和 TIMESTAMP
。
如果您想将字符串转换为 date
数据类型,则:
STR_TO_DATE(my_column, '%Y/%m')
您可以在这个日期使用 YEAR()
函数,它将 return 一个 integer
值 :
YEAR(STR_TO_DATE(my_column, '%Y/%m'))
最后:如果你想要的只是从存储为字符串的日期中获取年份,那么你可以使用 SUBSTR
直接提取字符串:
SUBSTR(my_column, 1, 4)
这 return 是一个字符串(不是整数),MySQL 在数字上下文中使用时会隐含地转换为数字。
time
是什么样子的?如果 year
的数据类型是年份,那么您可以在列中插入一个日期:
INSERT into `clean` (year)
SELECT DATE(CONCAT(SUBSTRING(time, 1, 4), '-01-01'))
FROM `orig` ;
我不喜欢 year
数据类型。您应该只将整个日期放入列中。
我在使用以下代码时遇到问题:
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
是 table orig
中的一个 varchar 列,格式为 yyyy/mm
.
我想从此 varchar 中提取年份部分并使用 STR_TO_DATE
您可以将 SUBSTRING(time,1,4)
转换为整数:
SELECT CONVERT(SUBSTRING(time,1,4),UNSIGNED INTEGER) FROM orig
无需先转为日期再转为整数
我猜你需要 return 一个整数值,因为你使用了 YEAR() 函数。
如果不是简单的 SELECT SUBSTRING(time,1,4) FROM orig
就可以了。
我建议使用 usual date and time MySQL datatypes, instead of the rarely used YEAR
datatype 之一:DATE
、DATETIME
和 TIMESTAMP
。
如果您想将字符串转换为 date
数据类型,则:
STR_TO_DATE(my_column, '%Y/%m')
您可以在这个日期使用 YEAR()
函数,它将 return 一个 integer
值 :
YEAR(STR_TO_DATE(my_column, '%Y/%m'))
最后:如果你想要的只是从存储为字符串的日期中获取年份,那么你可以使用 SUBSTR
直接提取字符串:
SUBSTR(my_column, 1, 4)
这 return 是一个字符串(不是整数),MySQL 在数字上下文中使用时会隐含地转换为数字。
time
是什么样子的?如果 year
的数据类型是年份,那么您可以在列中插入一个日期:
INSERT into `clean` (year)
SELECT DATE(CONCAT(SUBSTRING(time, 1, 4), '-01-01'))
FROM `orig` ;
我不喜欢 year
数据类型。您应该只将整个日期放入列中。