Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сравнить с датой, Короче новые шутки SQL'я 
:(
    Опции темы
Zero
  Дата 12.4.2005, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Мне нужен только пример.
Пусть есть таблица в которой один атрибут, с типом дата/время.
Скажите как создать запрос чтобы, по определённой дате вывести строку с этой датой, а то когда я пишу так:
Код

SELECT Дата
FROM Таблица1
WHERE Дата=#04/04/2006 10:47:53#;

то ни хрена не правильно выводится. smile Уже целый час мучаюсь непонятно с чем, что казалось можно сделать бы за 1-ну минуту.
Точнее сказать ничего не выводится, а дата в точности совпадает с той которая у меня в таблице.
Добавлено @ 17:31
Работаю в MS Access. Интересно кого в эту фирму только не понабрали. smile
PM MAIL ICQ   Вверх
SPrograMMer
Дата 12.4.2005, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Спамер :)
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 5.11.2004
Где: Краснодар

Репутация: 1
Всего: 6



Zero, дату заключай в апострофы.
Да и отдельно от веремени, хотя с Access`ом я не работал, может и вместе усё моно. smile


--------------------
животное = зверь
законченный гентушник
PM MAIL ICQ Jabber   Вверх
Zero
Дата 13.4.2005, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(SPrograMMer @ 12.4.2005, 17:44)
хотя с Access`ом я не работал

Вот именно. smile
Добавлено @ 07:35
Короче апострофу однозначно не подходят.
PM MAIL ICQ   Вверх
DimW
Дата 13.4.2005, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 5
Всего: 44



Zero- как я тебя понимаю... ты наткнулся на тот камень на который я наткнулся года 1,5 назад...

как можно избежать таких проблем в будушем:

тип датавремя в БД (Access) можно представить как тип Real- 02540,215 где челая часть это дата, а дробная время.

в своей таблице, для даты создаешь поле типа int, а записывать будешь так:

Table1.insert;
Table1.FieldByName('My_Date').AsInteger:=Trunc(Real(Date));
Table1.Post;

а извлекать так:

var
st:string;
------------------
st:=DateToStr(Date(Table1.FieldByName('My_Date').AsFloat));

согласись как будет удобно писать такой запрос:

SELECT Дата
FROM Таблица1
WHERE Дата=10254;

Ну а записать вместо даты(int) время(Real), думаю тебе не составит труда. smile



PM MAIL ICQ   Вверх
Dimich
Дата 13.4.2005, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 25.8.2004
Где: Брянск

Репутация: 3
Всего: 7



Интересно, а если выполнить так:
Код
SELECT Дата
FROM Таблица1
WHERE Дата>#04/04/2006 10:47:52#
  AND Дата<#04/04/2006 10:47:54#;

Он выберет чего нибудь?

З.Ы. Просьба не считать это методом решения, просто мне интересно знать.
--------------------
Не работает - исправь, работает - не трогай!!!
PM MAIL ICQ Jabber   Вверх
Zero
Дата 13.4.2005, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(Dimich @ 13.4.2005, 10:01)
просто мне интересно знать

Не вывел, ни чего. smile (а что сам не попробывал?) smile
DimW я конечно тоже люблю изобретать велосипеды, точнее часто приходится это делать, но как таковую проблему я решил другим способом, за место даты я сравнивал с одновременно 2-мя другими полями, и результат вроде тот же. А этот вопрос у меня просто остался не завершённым, и я хотел бы узнать обьяснения от того кто понимает причину по которой происходит такая штука. И как непосредственно нужно сравнивать с датой.
А на счёт замены типа дата время полями (int, real) мне кажется это не лучший способ, ИМХО проще будет текстовый тип использовать, ом и понятнее будет.
И кстати, как это ты интересно представляешь вот такое число 02540,215 в виде даты? Я когда читал про типы, то помню там было написано, что он представляется вещественным числом, а потом каким-то алгоритмом переводится во время, тока там алгоритм перевода (в Фаронове) не был приведён. smile А ты знаешь каким образом это делается? smile
PM MAIL ICQ   Вверх
DDX
Дата 13.4.2005, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 31.1.2005
Где: Москва

Репутация: 5
Всего: 5



Zero
вот сейчас в акцессе попробовал:
Код

SELECT table1.field1, table1.field2, table1.field3 
FROM table1 WHERE (((table1.field2)=#4/13/2005 15:39:25#));


ищет вообще без проблем, тип поля field2 - DateTime, ищет на ура
З.ы. ты уверен, что ищешь дату за 2006 год? (ну, так, уточнил)

это ищет в самом access, щас попробую в дельфях


WinXP SP 2, Access 2003, D6

Это сообщение отредактировал(а) DDX - 13.4.2005, 14:45
--------------------
Учиться, учитьcя и ещё раз учиться  
PM MAIL WWW   Вверх
Zero
Дата 13.4.2005, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



smile smile smile Да, точно... Я понял в чём вся хрень то было, Access день и месяц местами то переставляет.
Теперь всё нормально. smile smile
Спасибо DDX, всё тут я понял. smile
Цитата(DDX @ 13.4.2005, 14:33)
З.ы. ты уверен, что ищешь дату за 2006 год? (ну, так, уточнил)
А это было без разници, это я в качестве примера от балды вводил, у меня там в таблице и за 3000-ый год даты присудствуют. smile
PM MAIL ICQ   Вверх
DimW
Дата 13.4.2005, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 5
Всего: 44



Цитата
Я когда читал про типы, то помню там было написано, что он представляется вещественным числом, а потом каким-то алгоритмом переводится во время, тока там алгоритм перевода (в Фаронове) не был приведён.  А ты знаешь каким образом это делается? 


Туда и обратно:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
f:real;
begin
f:=Real(now);
Label1.Caption:= FloatToStr(Real(now));
Label2.Caption:= DateTimeToStr(TDateTime(f));
end;


Цитата
ИМХО проще будет текстовый тип использовать, ом и понятнее будет.


ды както некрасиво с текстовым полем делать операции типа BETWEEN, <=, >=, <, >!!!!
PM MAIL ICQ   Вверх
DDX
Дата 13.4.2005, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 31.1.2005
Где: Москва

Репутация: 5
Всего: 5



Цитата(Zero @ 13.4.2005, 14:59)
Access день и месяц местами то переставляет


Цитата(Zero @ 12.4.2005, 17:28)
WHERE Дата=#04/04/2006 10:47:53#;


у тебя и там, и там 4 smile

--------------------
Учиться, учитьcя и ещё раз учиться  
PM MAIL WWW   Вверх
Zero
Дата 13.4.2005, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(DDX @ 13.4.2005, 15:54)
у тебя и там, и там 4

Блин, да хрен её знает... У меня всегда так бывает, что когда сам что-нибудь делаю то не работает, а когда кто-нибудь, что-нибудь покажет, то заработает. smile
А прикинь какая фигня DDX, только что попробывал свой код который вначале был воткнуть, и теперь всё работает, а да этого когда писал не работало... smile И хрен его знает почему. smile
PM MAIL ICQ   Вверх
offline
Дата 14.4.2005, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 474
Регистрация: 7.2.2005

Репутация: 7
Всего: 7



Я однажды тоже с датами парился. ввожу даьу в Access все работает, а ввожу ее через запрос в Delphi так итог такой, что этой даты нет. Пришлось выкручиваться следуюшим образом, может пригодиться.
В запросе поле даты менял на строковую переменную (WHERE Str([Date])='01.12.3000'), а затем уже подсовыват данные не как дата, а как обыкновенная строка и все работало отлично smile
PM MAIL   Вверх
Guest
Дата 14.4.2005, 11:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Zero
бывает..
  Вверх
DDX
Дата 14.4.2005, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 31.1.2005
Где: Москва

Репутация: 5
Всего: 5



Zero
бывает

Это сообщение отредактировал(а) DDX - 14.4.2005, 18:10
--------------------
Учиться, учитьcя и ещё раз учиться  
PM MAIL WWW   Вверх
Medved
Дата 15.4.2005, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 1
Всего: 154



Для передачи значений в SQL запрос рекомендуется использовать параметры, Они для этого и существуют.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0592 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.