2013-04-13 2 views
0

У меня есть таблица, содержащая поля, как:Выберите значение строки в формат года

State_Code School_Code Established_Year Data_Year 
    12  12016837383   1962   2011-12 
    12  12018383799   1996   2011-12 
    12  12024895748   2007   2011-12 
    12  12037849837   1987   2011-12 

Здесь все эти поля типа VARCHAR.

Я хочу, чтобы получить все школы, которые были созданы до 1990 года я запустил этот запрос:

Select 
    School_Code, 
    date_format(str_to_date(Established_Year,'%y'),'%y') as Year, 
    date_format(str_to_date(Data_Year,'%y'),'%y') as Data_Year 
from 
    Table1 
WHERE 
    Established_Year < 1990; 

Но он возвращает это:

School_Code Year Data_Year 
12016837383  19  20 
12037849837  19  20 

Я пытался использовать функцию CONVERT также, как:

Select 
    School_Code, 
    Convert(Established_Year, YEAR) as Year 
from 
    Table1 
WHERE 
    Established_Year < 1990; 

Но он бросает эту ошибку:

Error Code: 1064 
You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax 
to use near 'YEAR' at line 1 

ответ

1

Фактически вы можете преобразовать его в int.

SELECT * 
FROM TableName 
WHERE CAST(Established_Year AS UNSIGNED) < 1990 

UPDATE 1

Основываясь на ваш комментарий, если вы хотите, чтобы получить эти School_Codes чьи Data_Year находится перед 2010-11, вам необходимо преобразовать Data_Year в реальную дату.

SELECT School_Code  
FROM TableName 
WHERE STR_TO_DATE(CONCAT(Data_Year, '-01'), '%Y-%m-%d') < DATE('2010-11-01') 
+0

Спасибо, Это решило мою проблему для поля Foundlished_Year. Но если я хочу получить те School_Codes, чей Data_Year до 2010-11; то как мне это сделать? – prachi

+0

см. Мои обновления, я конкатенировал '01', чтобы сделать его настоящей датой. –

+0

Фактически, столбец Data_Year показывает год, в который была собрана соответствующая информация об этой школе. «2011-12» не означает, что «2011» - год, а «12» - месяц или дата. Это годовая сессия. Извините, если я вас заблужу. – prachi

Смежные вопросы