Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TQuery + Date + SQL, Совершенно странно 
:(
    Опции темы
Ace Wentura
Дата 5.8.2005, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Создаю запрос в SQL Builder:
Код

SELECT FIO, BIRTH
FROM tbl
WHERE BIRTH = '1/1/1900'

Таблица взята из DBF-файла, где поле описано как дата.

Пытаюсь исполнить в билдере - пишет General SQL error без пояснений о характере ошибки.

Что это может быть и как возможно поправить?
PM MAIL   Вверх
Pakshin A. S.
Дата 5.8.2005, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Поставь ; smile

Что прямо ничего не пишет? Данные точны? А дай табличку... пример...
PM   Вверх
Bes
Дата 8.8.2005, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ой, с датами это вообще гемор....
пробуй вместо разделителей точки минусы местами поменяй год месяц число и пр. А вообще неплохо было бы разобраться раз и навсегда с этими непонятками где как и что нужно писать..... хороший вопрос
PM MAIL   Вверх
Pakshin A. S.
Дата 8.8.2005, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Bes @ 8.8.2005, 07:23)
где как и что нужно писать


А если посмотреть на таблицу, как там записана дата? И написать в том же формате?

Если заморочки с самим Date, то может перевести в строку через CAST() и работать как сос трокой или разбить дату на число, месяц и год при помощи EXTRACT() и работать по-отдельности.... Последний вариант скорее всего подойдет под общий случай, но многова-то писанины получится... smile
PM   Вверх
kobra
Дата 8.8.2005, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

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



исползовать параметры
PM MAIL   Вверх
Bes
Дата 8.8.2005, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



2Pakshin A. S.: не всегда помогает.
Я помоему победил так: беру дату перегоняю ее в строку с каким хочу форматированием и потом использую чере параметры в АДО где не надо в параметрах указывать тип данных. Это было с Акцессом.
P.S. Вообще вопрос с датами традиционно не простой хотя бы потому что разные страны пишут эту дату по разному (в отличие от "интернационального" integer или boolean) а хранят во float-e.
Кто-то в форуме помнится давал совет как стопроцентно работать с датами но я уже не помню кто и где. smile
PM MAIL   Вверх
Pakshin A. S.
Дата 8.8.2005, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Но ведь независимо от страны функция EXTRACT() должна возвращать нужные значения? Ведь вроде так, а значит можно и использовать (как вариант) почленное сравнение даты.
PM   Вверх
Bes
Дата 9.8.2005, 06:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не спорю только не понял смысла фразы если честно....
что значит почленное сравнение?.... если вырезать там год отдельно месяц и пр. то это не подойдет - ты же в запросе не будешь делать почленное сравнение...
PM MAIL   Вверх
Pakshin A. S.
Дата 9.8.2005, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Bes @ 9.8.2005, 07:20)
если вырезать там год отдельно месяц и пр. то это не подойдет - ты же в запросе не будешь делать почленное сравнение

А почему бы и не сделать, если других вариантов нету... smile Просто долгова-то писать и работать не так быстро будет.. smile
PM   Вверх
Bes
Дата 9.8.2005, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

ADOQuery1.sql.text:='insert into BirthTab (fio,dat) values (:fio, :dat)';
ADOQuery1.parameters[0].values:='MyName';
ADOQuery1.parameters[1].values:=strtodate('11.11.1917');
ADOQuery1.execSQL;
так я еще могу понять, а что ты предлагаешь?


PM MAIL   Вверх
Pakshin A. S.
Дата 9.8.2005, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



по-моему в теме обсуждаеся селект... smile
PM   Вверх
Bes
Дата 9.8.2005, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну ладно ради бога как ты селект выполнишь?
PM MAIL   Вверх
Pakshin A. S.
Дата 10.8.2005, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код

SELECT FIO, BIRTH
FROM tbl
WHERE 
(CAST(EXTRACT(YEAR FROM BIRTH) as INTEGER) = 2005) AND
(CAST(EXTRACT(MONTH FROM BIRTH) as INTEGER) = 1) AND
(CAST(EXTRACT(DAY FROM BIRTH) as INTEGER) = 2);


Это сообщение отредактировал(а) Pakshin A. S. - 10.8.2005, 20:15
PM   Вверх
Bes
Дата 11.8.2005, 06:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



smile
во изврат, даже не подазревал о таких возможностях T_SQL-я smile
Добавлено @ 06:32
Ок. можешь. Век живи - век учись
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1012 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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