2012-01-03 43 views
42

Tôi cần một truy vấn mysql để trích xuất năm từ định dạng ngày sau đây từ một bảng trong cơ sở dữ liệu của tôi.năm trích xuất mysql từ định dạng ngày

Đối với ví dụ:

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

các truy vấn sau đây không làm việc

select YEAR (subdateshow) from table 

Các loại cột là varchar. Có cách nào để giải quyết vấn đề này không?

Trả lời

56

Kể từ subdateshow của bạn là một cột VARCHAR thay vì đúng DATE, TIMESTAMP or DATETIME column bạn phải chuyển đổi chuỗi cho đến nay trước khi bạn có thể sử dụng NĂM trên đó:

SELECT YEAR(STR_TO_DATE(subdateshow, "%m/%d/%Y")) from table 

Xem http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date

+1

này đang làm việc một cách hoàn hảo .. :) –

+0

làm thế nào để đặt một tham số nơi ở chỗ chọn 'nơi năm = x' –

+0

bạn có thể kiểm tra điều này câu hỏi của tôi http://stackoverflow.com/questions/31204869/mysql-php-pdo-select-a-part-of-row-value-date-record?noredirect=1#comment50412416_31204869 –

4

này nên làm việc:

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

ví dụ:

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

thử mã này:

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

6

Bạn có thể thử này:

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

thử mã này:

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

này nên làm việc nếu định dạng ngày là phù hợp:

select SUBSTRING_INDEX(subdateshow,"/",-1) from table 
11
SELECT EXTRACT(YEAR FROM subdateshow) FROM tbl_name; 
Các vấn đề liên quan