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

Вниз

Запрос по дате   Найти похожие ветки 

 
rel_   (2003-12-18 12:45) [0]

Мастера, использую компоненты прямого доступа к Oracle.
Пишу наимпримитивнейший запрос :
select * from tab where data1="01.10.2002"

Вылетает ошибка : "месяц неверен"

В чём беда, не знаю. Через BDE и в TOAD"е всё работает ???


 
Sandman25   (2003-12-18 12:45) [1]

Параметры использовать!!!


 
DenK_vrtz   (2003-12-18 13:07) [2]

что в nls_lang записано?


 
DenK_vrtz   (2003-12-18 13:11) [3]

либо попробуй написать

select * from tab where to_char(data1,"DD.MM.YYYY")="01.10.2002"

только в данном случает про индекс по полю data1(если такой есть) придется забыть


 
rel_   (2003-12-18 13:17) [4]

Ну спасибо - щас попробую !!!

to DenK_vrtz © а что такое nls_lang ???
to Sandman25 © нужно без параметров.


 
JibSkeart   (2003-12-18 13:20) [5]

Как это нужно без параметров ??? :)

ну тогды делай конверт или каст


 
rel_   (2003-12-18 13:24) [6]

Мастера, боюсь, что перевод в char не подойдёт, т.к. на самом деле мне необходимо решить след. задачу.

в табл. есть 2 поля : напримен mes и god. Нужно взять значения с максимальной датой . Делаю следующее:

SELECT MAX (
CAST ( "01."
|| mes
|| "."
|| god AS DATE)
) AS dat
FROM tab

Вот здеся и ругается !!!


 
JibSkeart   (2003-12-18 13:25) [7]

а что за ошибку пишет ,
да и вообще какой формат даты ?


 
rel_   (2003-12-18 13:32) [8]

Вот мне и нужно знать как задать фомрат даты.
Я собираю в запросе дату из 3-х значений - получется нечто вроде "dd.mm.yyyy". - вылетает ошибка "месяц неверен".


 
JibSkeart   (2003-12-18 13:36) [9]

тогда пробуй mm.dd.yyyy
или в самом оракле выставь формат даты


 
rel_   (2003-12-18 13:45) [10]

Не понял . Проясни.
Что значит пробуй mm.dd.yyyy ???

Если то, что предложил DenK_vrtz, то не пройдёт, т.к. мне нужно получить не строку а именно дату, чтобы взять максимальное значение.


 
Reindeer Moss Eater   (2003-12-18 13:51) [11]

Я собираю в запросе дату из 3-х значений - получется нечто вроде "dd.mm.yyyy". - вылетает ошибка "месяц неверен".

TO_DATE(DATE_STRING,MASK_STRING);

Date Format Specifiers

Format Model Description
CC, SCC Century (S prefixes BC dates with a minus sign)
YYYY, SYYYY Year (S prefixes BC dates with a minus sign)
IYYY Year based on ISO standard
YYY, YY, Y Last three, two or one digits of the year
IYY, IY, I Last three, two or one digits of the ISO year
Y,YYY (Four Y"s with comma) put a comma in the year (1,995)
YEAR, SYEAR Year spelled out (S prefixes BC dates with a minus sign)
RR Last two digits of year in another century (allows for year 2000)
BC, AD BC or AD indicator
B.C., A.D. BC or AD indicators with periods
Q Numeric quarter of the year (1-4 with Jan-Mar=1)
MM 2 number month (Jan = 01)
RM Roman numeral month
MONTH Name of month spelled out (upper case - month is upper case)
MON abbreviated name of month (upper case - month is upper case)
WW Week of the year (1-53)
IW Week of the year (1-52, 1-53) based on ISO standard
W Week of month (1-5)
DDD day of year (1-366) (Don"t forget leap years)
DD day of month (1-31)
D day of week (1-7)
DAY Name of day (upper case, day is upper case)
DY Abbreviated name of day
J Julian day (Number of days since January 1, 4712 BC)
AM,PM Meridian indicator
A.M., P.M. Meridian indicator with periods.
HH, HH12 Hour of day (0-12)
HH24 Use 24 hour clock for hours (1-24)
MI Minute (0-59)
SS Second (0-60)
SSSSS (five S"s) seconds past midnight. (0-86399)
None Date must be in the format "DD-MON-YY";


 
rel_   (2003-12-18 14:37) [12]

to Reindeer Moss Eater ©

Просто немеренное спасибо - всё получилось.


 
DenK_vrtz   (2003-12-18 14:56) [13]

>rel_

to_date,
to_char -

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

Кое значение параметра nls_lang? (искать в реестре)


 
hCat   (2003-12-25 15:41) [14]

2 DenK_vrtz

> Кое значение параметра nls_lang? (искать в реестре)


Реально конвертацией строки в дату и наоборот управляет параметр nls_date_format. Если он не задан явно, то устанавливается в зависимости от значения nls_lang. Его можно задать явно для сессии командой:
alter session set nls_date_format = "dd.mm.yyyy"
сессии для этого потребуются права "alter sesssion".
В случае использования "alter session" приложение становится менее требовательным к настройке клиента, его будет легче помирить другими приложениями (один нужна маска dd.mm.yyyy, другим yyyy/mm/dd) и заодно вам не потребуется объяснять всем заказчикам, что именно и где надо прописать в реестре.


> select * from tab
> where to_char(data1,"DD.MM.YYYY")="01.10.2002"
>
> только в данном случает про индекс по полю data1(если такой
> есть) придется забыть

Зачем же, лучше так, чтобы про индекс не забывать

select * from tab
where data1 = to_date("01.10.2002","DD.MM.YYYY")



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

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

Наверх





Память: 0.48 MB
Время: 0.008 c
14-72876
aLL
2004-01-03 20:56
2004.01.23
Помогите в написании. программы.


11-72696
SPeller
2003-05-08 05:21
2004.01.23
Хорошая работа


1-72799
Прямой
2004-01-13 04:09
2004.01.23
Убиваю поток, а ресурсы не освобождаются.


1-72784
Марат
2004-01-13 11:57
2004.01.23
Button1


14-72943
Volkov
2003-12-31 13:42
2004.01.23
Всех с новым годом!!!





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