mysql - SQL STR_TO_DATE

标签 mysql sql str-to-date error-messaging

我在使用以下代码时遇到问题:

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 :DATEDATETIMETIMESTAMP

如果您想将字符串转换为 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/

相关文章:

mysql - 长SQL查询失败

mysql - 在 Ruby 中访问 MySQL 存储过程

php - ionic 2 : marge details with same values

mysql - 使用 SQL 将报价数据转换为烛台 (OHLC)

php - 通过PHP将日期值插入MySQL

php - 如何连接真实服务器中的数据库

sql - 如何使用管道|作为批处理脚本中 SQL 查询的一部分

MySQL STR_TO_DATE 对于只有月份和年份或只有年份的字符串

MySQL STR_TO_DATE 小时格式

mysql - 索引 btree 不起作用