Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Формат даты в SQL запросе


Автор: Lunatikus 16.7.2007, 10:35
Код

SELECT format(date,"m") FROM T WHERE format(date,"m")<6

 
Ругается на то что не знает функции format...в чем ошибка?
Сервер MY SQL 2000.

Автор: Rodman 16.7.2007, 10:56
ты разделом не ошибся?

вообщето (в тему) данные можно при помощи делфей обработать!

Автор: Lunatikus 16.7.2007, 10:59
Так в запросе что,нельзя использовать только,например,месяц из поля даты?Если можно,то какая функция?

Автор: Rodman 16.7.2007, 11:07
http://www.linuxshare.ru/docs/software/SQL/mysql/manual/Date_and_time_functions.html

Автор: Lunatikus 16.7.2007, 11:27
Спасибо,полезный ресурс.Но все равно не работает,например,функция NOW().Есть какие соображения,почему?Я пытаюсь ее использовать вот как:
Код

select month(date) from T where month(date)=month(now())


Добавлено через 10 минут и 8 секунд
Все,нашел ошибку и решение проблемы!Вместо now() использовал getdate().
Спасибо за уделенное время,вопрос решен.

Автор: Lunatikus 16.7.2007, 12:04
Елки-палки,снова проблема с датой!Не работает функция DATE_FORMAT =(( пишет что "DATE_FORMAT is not recognize function" Никаких других функций по форматированию даты нет?

Автор: Rodman 16.7.2007, 12:26
Цитата(Lunatikus @  16.7.2007,  11:04 Найти цитируемый пост)
Не работает функция DATE_FORMAT

телепаты вымерли...

покажи как ты делаешь! только после этого моно подправить или изменить!

Автор: Lunatikus 16.7.2007, 12:36
Код

date:=DateTimePicker.Date;
ADOQ1.SQL.Add('SELECT * FROM T WHERE Date_Format(data,"dd.mm.yyyy")<'''+FormatDateTime('dd.mm.yyyy',date)+'''');


В итоге опять получаю ошибку "date_format is  not a recognized function"
Просто написать
Код

date:=DateTimePicker.Date;
ADOQ1.SQL.Add('SELECT * FROM T WHERE data<'''+FormatDateTime('dd.mm.yyyy',date)+'''');

тоже выдает ошибку,другую уже: "the conversion of a char date type resulted in an out-of-range datetme value"

Автор: Rodman 16.7.2007, 12:38
Lunatikus, ну чудишь... теперь ты спрашивает про делфийскую функцию...

какой формат ты хочешь сравнивать?

Автор: Lunatikus 16.7.2007, 12:42
Да неважно-если я вручную создам этот запрос и активирую на форме-те же ошибки =( Я хочу просто делать выборку с условием попадания значения поля типа date в определенный интервал,задаваемый с помощью DateTimePicker пользователем.

Автор: Rodman 16.7.2007, 12:49
т.е. ты сравниваешь обычные "10.10.2005" и "16.07.2007"

Автор: Lunatikus 16.7.2007, 12:53
Да,а что?кхм...я сравниваю строку с датой получается?Как же тогда мне задать улсовие на попадание в интервал?Х_х

Автор: Rodman 16.7.2007, 13:00
Код

date:=;
ADOQ1.SQL.Add('SELECT * FROM T WHERE data<'+DateToStr(DateTimePicker.Date)+';');

а так пойдет?

Автор: Lunatikus 16.7.2007, 13:03
Ругается "Incorrect syntax near '.2007' "  ...
А если все же поставить одинарные кавычки 
Код

date:=;
ADOQ1.SQL.Add('SELECT * FROM T WHERE data<'''+DateToStr(DateTimePicker.Date)+''';');

Выскакивает старая ошибка the conversion of a char date type resulted in an out-of-range datetme value.

Автор: Rodman 16.7.2007, 13:09
Код

ADOQ1.SQL.Add('SELECT data, * FROM T WHERE (data<Prm);');
ADOQ1.Parameters.ParamByName('Prm').Value:=DateTimePicker.Date;
ADOQ1.Open;

ЗЫ: Региональные настройки проверь. Возможно у тебя дата возвращается через "/"

Автор: Lunatikus 16.7.2007, 13:17
Все тоже самое =(

Возможно,где эти настройки находятся?

Автор: Rodman 16.7.2007, 13:22
сделай
Код

ShowMessage(DateToStr(TP.Date));


что покажет?

Автор: Lunatikus 16.7.2007, 14:42
Фомат dd.mm.yyyy показал.
Твой вариант
Код

ADOQ1.SQL.Add('SELECT data, * FROM T WHERE (data<Prm);');
ADOQ1.Parameters.ParamByName('Prm').Value:=DateTimePicker.Date;
ADOQ1.Open;

заработал,просто я с созданием параметров намудрил и не пошло с первого раза.
Странно...почему тогда через параметры получилось а напрямую нет.

Автор: Rodman 16.7.2007, 14:49
Цитата(Lunatikus @  16.7.2007,  13:42 Найти цитируемый пост)
Странно...почему тогда через параметры получилось а напрямую нет. 

патамучто!

ЗЫ: так корректнее привидение типов происходит! 

почему топик до сих пор "Не решен"?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)