2012-01-03 67 views
42

我需要一个mysql查询来从我的数据库中的表中提取以下日期格式的年份。mysql从日期格式中提取年份

对于如:

 subdateshow 
     ----------------  
     01/17/2009 
     01/17/2009 
     01/17/2009 
     01/17/2009 
     01/17/2009 

以下查询没有工作

select YEAR (subdateshow) from table 

列的类型为varchar。有什么办法可以解决这个问题吗?

回答

56

由于您的subdateshow是VARCHAR列,而不是你要的字符串转换为日期之前,你可以用它YEAR正确DATE, TIMESTAMP or DATETIME column

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

这是工作完美.. :) – 2012-01-03 13:20:48

+0

如何把一个参数,在这里选择'其中year = X' – 2015-07-03 11:56:52

+0

可以选中此我的问题http://stackoverflow.com/questions/31204869/mysql-php-pdo-select-a-part-of-row-value-date-record?noredirect=1#comment50412416_31204869 – 2015-07-03 12:02:38

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" */ 
0

TRY:

SELECT EXTRACT(YEAR FROM (STR_TO_DATE(subdateshow, '%d/%m/%Y'))); 
0

试试这个代码:

SELECT YEAR(str_to_date(subdateshow, '%m/%d/%Y')) AS Mydate

6

你可以试试这个:

SELECT EXTRACT(YEAR FROM field) FROM table WHERE id=1 
3

试试这个代码:

SELECT DATE_FORMAT(FROM_UNIXTIME(field), '%Y') FROM table 
2

如果日期格式是一致的。它应该工作:

select SUBSTRING_INDEX(subdateshow,"/",-1) from table 
11
SELECT EXTRACT(YEAR FROM subdateshow) FROM tbl_name; 
相关问题