我需要一个mysql查询从我的数据库中的表中提取以下日期格式的年份。
例如:
subdateshow
----------------
01/17/2009
01/17/2009
01/17/2009
01/17/2009
01/17/2009
以下查询无效
select YEAR ( subdateshow ) from table
列类型为varchar。有什么方法可以解决这个问题吗?
答案 0 :(得分:66)
由于您的subdateshow是VARCHAR列而不是正确的DATE, TIMESTAMP or DATETIME column,您必须先将字符串转换为日期,然后才能使用YEAR:
SELECT YEAR(STR_TO_DATE(subdateshow, "%m/%d/%Y")) from table
请参阅http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date
答案 1 :(得分:18)
finally
答案 2 :(得分:8)
你可以试试这个:
SELECT EXTRACT(YEAR FROM field) FROM table WHERE id=1
答案 3 :(得分:4)
这应该有效:
SELECT YEAR(STR_TO_DATE(subdateshow, '%m/%d/%Y')) FROM table;
例如:
SELECT YEAR(STR_TO_DATE('01/17/2009', '%m/%d/%Y')); /* shows "2009" */
答案 4 :(得分:3)
试试这段代码:
SELECT DATE_FORMAT(FROM_UNIXTIME(field), '%Y') FROM table
答案 5 :(得分:2)
如果日期格式一致,这应该有效:
select SUBSTRING_INDEX( subdateshow,"/",-1 ) from table
答案 6 :(得分:0)
TRY:
SELECT EXTRACT(YEAR FROM (STR_TO_DATE(subdateshow, '%d/%m/%Y')));
答案 7 :(得分:0)
试试这段代码:
SELECT YEAR( str_to_date( subdateshow, '%m/%d/%Y' ) ) AS Mydate