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

Вниз

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

 
sergey32   (2002-09-11 15:25) [0]

чтобы в запрос передавать дату в виде числа?


 
{bas}   (2002-09-11 15:32) [1]

а зачем???


 
Johnmen   (2002-09-11 15:36) [2]

Какого такого числа ??? :)


 
sergey32   (2002-09-11 15:40) [3]

я разбираюсь с чужим проектом,
на некоторых машинах не работают запросы,
на остальных работают.
Я установил, что ошибка из-за несовместимости типов данных,
т.к. дата в запрос передается ввиде числа,
если я передаю дату ввиде даты, то запрос работает.


 
sergey32   (2002-09-11 15:50) [4]

число например 37407


 
Black Cat   (2002-09-11 15:54) [5]

У Оракула как бы не поддерживается преобразование Date в Number и наоборот


 
Johnmen   (2002-09-11 15:55) [6]

Если имеется в виду количество дней, то
передавай Trunc(<TDateTime>)


 
sergey32   (2002-09-11 16:00) [7]

именно так и передается в исходниках
Trunc(<TDateTime>)


 
sergey32   (2002-09-11 16:02) [8]

и если Trunc убрать, а оставить только TdateTime, то работает.


 
Black Cat   (2002-09-11 16:14) [9]

Trunc Оракловский имеется в виду? Или паскальный? И что значит не работает?


 
sergey32   (2002-09-11 16:18) [10]

trunc имеется ввиду оракловый, а не работает, потому, что выдает
ошибку: Несовместимый тип данных


 
SergLight   (2002-09-11 16:19) [11]

Что значит дата в виде даты? Дата это по любому число.
Просто целая часть TDateTime это число дней, а дробная - это время.
Попробуй вместо Trunc() использовать Int().


 
Black Cat   (2002-09-11 16:24) [12]

А текст запроса? Вот такой кусок точно работает:
...
where a.nobj7=:nobj7 and trunc(a.day_begin)=trunc(:day)
...


 
sergey32   (2002-09-11 16:29) [13]

a.day_begin - какой тип поля?


 
Black Cat   (2002-09-11 16:32) [14]

a.day_begin Date, :day - TDateTime. Функция trunc от даты без параметров просто удаляет время из даты и возвращает же дату.


 
sergey32   (2002-09-11 16:33) [15]

select * from auto_date where trunc(begin_date)>
trunc("01.06.2002")
не работает и

select * from auto_date where trunc(begin_date)>trunc(37407)

тоже не работает


 
Black Cat   (2002-09-11 16:36) [16]

trunc("01.06.2002") - ?????
trunc(to_date("01.06.2002","dd.mm.yyyy"))



 
sergey32   (2002-09-11 16:42) [17]

привожу пример из исходников:

and p.date_grid between trunc(:SYS_DATE1) and trunc(:SYS_DATE2)

почему на некоторых машинах это работает, а на некоторых нет?
судя по ответам, здесь все правильно.
вопрос заключается в том, что может влиять на работу?


 
Black Cat   (2002-09-11 16:48) [18]

если :SYS_DATE1 и :SYS_DATE2 и p.date_grid типа DATE то все ОК


 
sergey32   (2002-09-11 16:56) [19]

все параметры и поля типа Dаte,
дело в том, что для доступа к Ораклу используется самописный сервер, сделанный на основе Midas.



 
sergey32   (2002-09-11 17:01) [20]

текст запроса формируется в исходниках, на клиентской машине,
там же запрос и открывается.
Могут ли локальные настройки на машине влиять на передачу параметров?


 
sergey32   (2002-09-11 17:11) [21]

Я сделал тестовый проект, подконнектился к базе через ADO,
в ADOQUERY написал запрос

select * from auto_date where begin_date>trunc(:Begin_Date)

в обработчик нажатия кнопки написал
ADOQuery1.Parameters.ParamByName("begin_date").Value:=DateTimePicker1.Date;
ADOQuery1.Open;

выдает ошибку о несовместимости данных


 
Johnmen   (2002-09-11 17:26) [22]

Убери trunc и попробуй еще раз...


 
sergey32   (2002-09-11 17:43) [23]

без trunc все работает, но в проекте везде стоит trunc.
как это обойти не компилируя проект, я не знаю.


 
Johnmen   (2002-09-11 17:52) [24]

Я тоже...:))

Видимо (если на одних компах работает, а на др. нет) придется сравнивать региональные настройки винов и настройки Оракула (в части формата даты)...


 
sergey32   (2002-09-11 17:55) [25]

об этом я и спрашиваю.
А где в Оракле меняются настройки форматов?


 
Johnmen   (2002-09-11 18:01) [26]

>sergey32 © (11.09.02 17:55)
>А где в Оракле меняются настройки форматов?

Сходу не вспомню...Пора убегать...
Если есть доки - см.туда !




 
sergey32   (2002-09-11 18:05) [27]

а как в региональных настройках поставить формат даты в виде числа?


 
sergey32   (2002-09-11 18:28) [28]

если я правильно понял, то в Оракле тоже есть функция
trunc, значит клиентское приложение вместо того, чтобы
выполнять Оракловый trunc, начинает выполнять Дельфи trunc.
или наоборот.


 
Val   (2002-09-11 21:45) [29]

>Black Cat © (11.09.02 15:54)
это не совсем верно:
function TO_DATE(num NUMBER, fmt VARCHAR) return DATE;
function TO_DATE(num NUMBER, fmt VARCHAR, nlsparams VARCHAR2) return DATE;


 
roottim   (2002-09-12 09:48) [30]

2Val © (11.09.02 21:45)
интересно откуда такие функции появились
в релиз2 9и ?

2sergey32 © (11.09.02 17:11) select * from auto_date where begin_date>trunc(:Begin_Date)

типы нужно приводить к одному!. если сравниваеш даты то так и пиши
а если trunc (число) то соотв-но приводи к числу и 2-ю часть неравенства
select * from auto_date where trunc(begin_date)>trunc(:Begin_Date)

про винды незнаю, но всеже посмотри в настройка разделитель дробной части (.)

насчет остальных причин трудно сказать... кто делает прекомпиляцию запроса? мб, где-то на среднем уровне такая типология непроходит


 
Black Cat   (2002-09-12 09:58) [31]


> Val © (11.09.02 21:45)

Насколько мне известно, в 8 Оракуле такой номер прокатывает только для Юлианской даты для формата "J", типа
to_date(3456,"J")
Но это весьма частный случай.
"TO_DATE converts char of CHAR or VARCHAR2 datatype to a value of DATE datatype. The fmt is a date format specifying the format of char. If you omit fmt, char must be in the default date format. If fmt is "J", for Julian, then char must be an integer."


 
sergey32   (2002-09-12 10:19) [32]

задача такая: не меняя исходных текстов настроить
клиентскую машину, чтобы все это работало.


 
Val   (2002-09-12 10:48) [33]

>roottim (12.09.02 09:48)
я сам их написал и вру тут ;)
если серьезно - в 8.1.7 работает точно.
>Black Cat © (12.09.02 09:58)
вы опять не совсем правы, например на 100% работают запросы: с форматами "DD", "YY", "YYYY", "MM" и т.д.


 
Black Cat   (2002-09-12 11:03) [34]


> >Black Cat © (12.09.02 09:58)
> вы опять не совсем правы, например на 100% работают запросы:
> с форматами "DD", "YY", "YYYY", "MM" и т.д.

Ну, это из фирменной документации, так что это к Ораклу.

Про 100% вы можете забыть, такие запросы будут работать только когда число цифр точно совпадает с числом символа формата, а в результате получается дата, где недостающие элементы даты будут заменятся текущим годом, месяцем, первым числом месяца.

Как-то абсолютно непохоже на преобразование из Number в Date, не правда ли?


 
Black Cat   (2002-09-12 11:08) [35]

Более того, результаты вызовов функций
to_date(12122002,"ddmmyyyy")
to_date(to_char(12122002),"ddmmyyyy")
абсолютно аналогичны (просто неявное пребразование типов)


 
Val   (2002-09-12 11:15) [36]

>Black Cat © (12.09.02 11:03)
Про 100% вы можете забыть..<i/>
ну знаете, любая функция не будет работать, если туда передавать некорректные параметры.
Как-то абсолютно непохоже..<i/>
На входе число, на выходе дата, правда? Так что это противоречит вашему утверждению выше в принципе, на что я и указал. О конкретике речь не идет, не правда ли?


 
Black Cat   (2002-09-12 11:22) [37]


> Val © (12.09.02 11:15)

Речь идет о том, как помочь автору исходного вопроса решить проблему. Использование функции to_date приведенным образом ни в коей мере ему не поможет. Еще раз: результат функции будет зависеть от текущей даты и все его запросы в результате полетят.


 
Val   (2002-09-12 11:29) [38]

>Black Cat © (12.09.02 11:22)
Я не говорил, что это поможет автору вопроса и обращался именно к вам. Думаю, приведенная мной информация не будет лишней в знаниях уважаемых коллег.


 
Black Cat   (2002-09-12 11:42) [39]


> Val © (12.09.02 11:29)

Ок, в таком случае я думаю, мы пришли к консенсусу ;-)


 
Val   (2002-09-12 11:44) [40]

>sergey32 © (12.09.02 10:19)
возможно дело в nls параметрах сессий.
выполните на машинах
select * from nls_session_parameters
и сравните параметры дат, чисел ..



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

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

Наверх





Память: 0.53 MB
Время: 0.009 c
1-21049
Sectey
2002-09-27 14:50
2002.10.07
Перемещение компонента во время выполнения.


1-20961
denick
2002-09-26 11:27
2002.10.07
Как написать условие?


1-21028
Fishka
2002-09-26 10:08
2002.10.07
DATETIMEPICKER - четырехзначный год?


1-20964
tytus
2002-09-26 12:07
2002.10.07
Доступ к папке.


8-21154
AT
2002-06-07 10:40
2002.10.07
DirectX





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