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

Вниз

Тип 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
3-470
gram
2003-04-14 14:12
2003.05.01
Какое тип в IB соответсвует Memo?


6-662
nikb
2003-03-05 01:07
2003.05.01
Connect ClientSocket to ServerSocket


6-669
Urmat
2003-03-03 07:28
2003.05.01
Работа WinInet API


1-535
NewN
2003-04-18 13:14
2003.05.01
Как c assignfile открыть файл только для чтения?


7-802
oduvanchik_pro
2003-03-12 15:38
2003.05.01
Работа с драйверами





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский