Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];

Вниз

Подскажите как можно составить фильтр   Найти похожие ветки 

 
dreamse   (2007-10-22 02:12) [0]

Поле RecordDTime это DataTime т.е там храниться и дата и время

Как составить SQL запрос чтобы можно было указать параметры к этому полю только дату ? ( В поле записи в виде Даты и времени )

Делаю так



SELECT * FROM main
WHERE RecordDTime = "22.10.2007"


ничего не выводит :(

с SQL только недавно начал знакомиться.

Запись в RecordDTime  примерно следующая : 22.10.2007 02:30:34

Нужно в итоге получить все записи где RecordDTime  совпадает с тем что указал в фильтре


 
Antoxa2005   (2007-10-22 02:39) [1]

Попробуй

SELECT * FROM main WHERE RecordDTime = :RDT;

...Query1.Parameters[0].Value:=StrToDate("22.10.2007");


 
Dreamse   (2007-10-22 03:02) [2]

Так и пробую, может просто ошибка в запросе ?
У меня 2 даты и нужно отчёт выводить с начала одной даты и по окончанию другой :


     MyQueryOtshot.SQL.Text := "SELECT * FROM main_log WHERE RecordDTime >= :pFromDate and RecordDTime <= :pToDate";
     MyQueryOtshot.ParamByName("pFromDate").AsDateTime := DateTime_ObOtshot.Date;
     MyQueryOtshot.ParamByName("pToDate").AsDateTime := DateTime_ObOtshot2.Date + 1;
     MyQueryOtshot.Open;


В чём может быть ошибка ?


 
Dreamse   (2007-10-22 03:05) [3]

Например следующий SQL запрос выводит только данные за текущий день :(

но если его же вставить в SQL редактор то данные вообще не выводяться :(


SELECT * FROM main_log WHERE RecordDTime >= "21.10.2007" and RecordDTime <= "23.10.2007"


 
Dreamse   (2007-10-22 03:06) [4]

Переделывать просто на 2 поля нереально, уже много слишком написано и кода и приложений с этой структурой БД


 
Германн ©   (2007-10-22 03:13) [5]


> но если его же вставить в SQL редактор то данные вообще
> не выводяться :(
>
>
> SELECT * FROM main_log WHERE RecordDTime >= "21.10.2007"
> and RecordDTime <= "23.10.2007"
>

А кто есть "SQL редактор"?
А про параметры ни слова!


 
Dreamse   (2007-10-22 03:19) [6]

> Германн ©   (22.10.07 03:13) [5]

SQL редактор в EMS MySQL Manager
Про параметры не понял ничего.

Есть поле RecordDTime  это TdataTime в нём находиться и дата и время
Есть SQL запрос


SELECT * FROM main_log WHERE RecordDTime = "21.10.2007"


Который ничего не выводит так как указывается не чёткое значение даты и времени а просто дата.

Вопрос : Как составить запрос чтобы указывать ТОЛЬКО дату и получить таблицу в которой RecordDTime совпадает указанной дате не обращая внимания на время ?


 
Dreamse   (2007-10-22 03:20) [7]

Если указывать в коде Delphi следующие параметры :



    MyQueryOtshot.SQL.Text := "SELECT * FROM main_log WHERE RecordDTime >= :pFromDate and RecordDTime <= :pToDate";
    MyQueryOtshot.ParamByName("pFromDate").AsDateTime := DateTime_ObOtshot.Date;
    MyQueryOtshot.ParamByName("pToDate").AsDateTime := DateTime_ObOtshot2.Date + 1;
    MyQueryOtshot.Open;



т.е именно AsDateTime то данные выводятся но почему то только за текущий день. Например на сегодняшнее 22 число без разницы какая дата указана в параметрах.


 
Reindeer Moss Eater ©   (2007-10-22 09:02) [8]

Что попросил, то и выводится.


 
Виталий Панасенко ©   (2007-10-22 09:16) [9]

SELECT * FROM main
WHERE Cast(RecordDTime as DATE) = "22.10.2007"
не подходит ?


 
engine ©   (2007-10-22 11:53) [10]

> [7] Dreamse   (22.10.07 03:20)
> MyQueryOtshot.ParamByName("pToDate").AsDateTime := DateTime_ObOtshot2.Dat
> e + 1;


MyQueryOtshot.ParamByName("pToDate").AsDateTime := IncDay(DateTime_ObOtshot2.Dat)


 
Desdechado ©   (2007-10-22 12:10) [11]

НИКОГДА не пишите дату в запросе в тестовом виде, т.к. правила ее преобразования во внутренний формат сервера могут зависеть от чего угодно (настроек локали компа, настроек самого сервера, каких-то их комбинаций, или вообще не быть настраиваемой). Используйте параметры, которые "начинять" тоже ОЧЕНЬ нежелательно преобразованием из строк.

Для отсечения времени от даты почти в любом SQL-сервере (где дата совместно с временем) есть специальная функция. Но гораздо удобнее указывать диапазон от 00:00 нужной даты до 00:00 следующей.

Dreamse   (22.10.07 03:20) [7]
Так и должно быть.


 
Anatoly Podgoretsky ©   (2007-10-22 16:48) [12]

> Dreamse  (22.10.2007 03:20:07)  [7]

А что ты хочешь, наверно pFromDate равно текущему дню, а pToDate" на единицу больше.


 
dreamse   (2007-10-23 04:25) [13]

> Anatoly Podgoretsky ©   (22.10.07 16:48) [12]

Это тестовая еденичка была. Уже подправил.

В общем проблема решена, быа проблема в составлении запроса :

Было


MyQueryOtshot.SQL.Text := "SELECT * FROM main_log WHERE RecordDTime >= :pFromDate and RecordDTime <= :pToDate";


А нужно было обозначить скобками :


MyQueryOtshot.SQL.Text := "SELECT * FROM main_log WHERE (RecordDTime >= :pFromDate) and (RecordDTime <= :pToDate)";


Когда SQL запрос составляешь с использованием переменных которые являються AsDataTime всё отлично выводит :

     MyQueryOtshot.SQL.Text := "SELECT * FROM main_log WHERE (RecordDTime >= :pFromDate) and (RecordDTime <= :pToDate)";
     MyQueryOtshot.ParamByName("pFromDate").AsDateTime := trunc(DateTime_ObOtshot.Date);
     MyQueryOtshot.ParamByName("pToDate").AsDateTime := trunc(DateTime_ObOtshot2.Date) + 1;
     MyQueryOtshot.Open;


Спасибо всем кто откликнулся на данную проблему.


 
Desdechado ©   (2007-10-23 11:23) [14]

> А нужно было обозначить скобками :
Ну ни фига себе?!



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.007 c
2-1203090960
antonn
2008-02-15 18:56
2008.03.16
Порекомендуте легковесный аналог ListView


2-1203496459
fluxion
2008-02-20 11:34
2008.03.16
SQL запрос.


2-1203247667
Knob
2008-02-17 14:27
2008.03.16
FTP соединение


15-1202263587
ingwar
2008-02-06 05:06
2008.03.16
Delphi для обучения студентов


4-1184897733
balepa
2007-07-20 06:15
2008.03.16
RS-485 и ЦП8501/2





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский