2012-05-07 5 views
1

У меня есть поле даты в Mysql, которое хранится как char следующим образом 050712 .. Теперь я хотел бы отобразить результаты, которые доступны в базе данных, которые меньше этой даты. Я пишу такЗапрос Mysql help для отображения результатов меньше, чем данная дата

Состояние должно обязательно

select * from tblFedACHRDFI where date_format(changedate,'%m/%d/%Y')> 05/08/12; 

Это отображает все записи, которые доступны, но я не нуждаюсь в том, что я хотел бы, чтобы отобразить только тогда, когда дата 05/06/12 что означает

Правда Состояние

select * from tblFedACHRDFI where date_format(changedate,'%m/%d/%Y')> 05/06/12; 

То же работал для меня в Sqlserver, когда я пишу так

отчеты не получает отображаться, что верно, согласно моему требованию

select * from tblFedACHRDFI where 
CONVERT(datetime,(SUBSTRING(ChangeDate,1,2)+'/' 
+SUBSTRING(ChangeDate,3,2)+'/'+dbo.Years 
(SUBSTRING(ChangeDate,5,2))+SUBSTRING(ChangeDate,5,2)))> 
'05/08/2012' 

Так может ли один помочь мне, где я не заладилось в MySql заявление ..

+0

Это плохой способ хранения дат в MySQL. Если вы можете, переключитесь на 'DATE' вместо' CHAR'. –

ответ

3

Свидание MySQL должен быть YYYY-MM-DD , тип столбца должен быть DATE.

Если вы хотите сохранить дату любым другим способом (например, CHAR (6), как вы здесь), вам придется использовать конверсии каждый раз, когда вы используете дату. Это медленнее, использует больше CPU и может выйти из строя, потому что вы можете хранить недопустимые значения в поле CHAR.

Это действительно работает, однако. Используйте функцию STR_TO_DATE для преобразования столбца CHAR в подходящую дату. Теперь вы можете сравнить его с подходящей датой, использовать функции INTERVAL, весь shebang:

select * 
from tblFedACHRDFI 
where str_to_date(changedate,'%m%d%Y') > "2012-08-05"; 
+0

Но я не могу получить записи, если я укажу дату как «2012-06-05» – Dotnet

+0

Что значит «если я введу дату как 2012-06-05»? Ваш 'changedate' является CHAR (6), верно? Сохранение 2-х цифр за каждый месяц, день, год? Ну, используйте STR_TO_DATE, чтобы MySQL преобразовал его в соответствующую DATE, тогда вы можете использовать эту правильную дату для того, что вам нужно (в примере, позднее, чем в августе 5-го). – Konerak

+0

Мои записи доступны только до 'май 07 2012', поэтому моя запись должна отображаться, если я буду вводить' may 06 2012', т.е. '2012-06-05' – Dotnet

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