Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.01;
Скачать: CL | DM;

Вниз

Тип Date в IB   Найти похожие ветки 

 
KIR ©   (2003-04-14 20:42) [0]

Народ в чем вилы? Есть таблица условно состоящая из двух полей Dat (TDate) и MyField (Integer), пользуюсь компонентами FIBPlus, пишу следующий запрос:

SELECT
*
FROM
myTable
WHERE
Dat = :Param1

В таблице 100% есть запись с сегодняшним числом.
Далее:

MyDS.CLose;
MyDS.ParamByName("Param1").AsDate := Date;
MyDS.Open;

результат - пустой НД.
Как-только меняю запрос на такой:

SELECT
*
FROM
myTable
WHERE
Dat >= :Param1

Все работает. В чем секрет?


 
Sergey Masloff   (2003-04-14 21:16) [1]

Ну, судя по всему у тебя в Dat дата и время. A Date() возвращает только дату, одним словом на время 0:00. Соответственно 14.04.02 10:00 >= 14.004.02 0:00


 
KIR ©   (2003-04-14 21:18) [2]

Вот, кстати, что еще обнаружил: с базой работают несколько разных приложений. Так вот они используют одну и ту же ХП, которая как раз и делает Insert/Update таблицы с датой. Так вот из одного приложения дата вводится так: 14.04.03 0:24:42, а из другого так: 14.04.03. Время мне совсем не нужно, мне надо оставить только дату, как во втором примере. Народ, как обойти?


 
KIR ©   (2003-04-14 21:19) [3]

>Sergey Masloff
Ну да, но тип поля-то Date, а не DateTimeStamp...


 
Sergey Masloff   (2003-04-14 21:35) [4]

KIR © (14.04.03 21:19)
>Sergey Masloff
>Ну да, но тип поля-то Date, а не DateTimeStamp...

А диалект 3?

Насчет приложений разных: одно их приложений делает видимо Trunc для отбрасывания времени.


 
KIR ©   (2003-04-14 22:07) [5]

Диалект 1. Я уже догнал до Trunc, только приложение его не делает. Я сам ручками во всех приложения прописал Round(Date) и все стало ОК. Хорошо, что во обоих приложениях текущая дата - это глобальная переменная, которая определяется при загрузке, а до бы я долгооооо искал все места, где нужно ее использовать :)


 
Sergey Masloff   (2003-04-14 22:32) [6]

KIR ©
В диалекте 1 Date это то, что в 3 называется TimeStamp то есть дата и время. В 3 диалекте Date это только дата.


 
Sergey Masloff   (2003-04-14 22:36) [7]

KIR ©
Round(Date) - это плохо. Тебе нужно не округлять а отбрасывать дробную часть, что с успехом сделает Trunc. Round же тебе и до следующего дня округлит в легкую.


 
KIR ©   (2003-04-15 10:14) [8]

Спасибо, что-то я про Round не подумал...



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

Текущий архив: 2003.05.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
3-418
Брат
2003-04-11 15:45
2003.05.01
Как сделать чтобы программа ждала пока выполнится запрос?


14-733
Дмитрий К.К.
2003-04-14 07:31
2003.05.01
Именинники 12 апреля


1-518
yul
2003-04-20 15:01
2003.05.01
RadioGroup


4-829
cult
2003-03-04 13:15
2003.05.01
Как происходит закрытие меню?


3-406
anton2v
2003-04-11 14:47
2003.05.01
Программное задание IDLanguage