Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / почему <= воспринимается как < / 16 сообщений из 16, страница 1 из 1
30.03.2017, 15:09
    #39430212
Altagracia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему <= воспринимается как <
Почему при в таком запросе:

Код: plsql
1.
2.
3.
4.
select name, date
from t1
where (date >= '15.03.17'
and date <= '17.03.17')



записи за 17.03.17 не будут включены?
...
Рейтинг: 0 / 0
30.03.2017, 15:12
    #39430220
почему <= воспринимается как <
Altagracia,

Тип данных строковый.
...
Рейтинг: 0 / 0
30.03.2017, 15:13
    #39430222
ORA__SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему <= воспринимается как <
AltagraciaПочему при в таком запросе:
Код: plsql
1.
2.
3.
4.
select name, date
from t1
where (date >= '15.03.17'
and date <= '17.03.17')


записи за 17.03.17 не будут включены?
Как я должен догадаться, что '15.03.17' - это дата. По мне сейчас это обычная строка.
Что попросил, то и получил
...
Рейтинг: 0 / 0
30.03.2017, 15:14
    #39430223
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему <= воспринимается как <
Потому что date - это datetime.
...
Рейтинг: 0 / 0
30.03.2017, 15:23
    #39430238
Viewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему <= воспринимается как <
записи за 17.03.17 будут включены, если они придутся точно на 17.03.17 00:00:00
По факту ты просишь показать всё что >= 15.03.17 00:00:00 и <= 17.03.17 00:00:00
...
Рейтинг: 0 / 0
30.03.2017, 15:25
    #39430244
Viewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему <= воспринимается как <
ORA__SQLКак я должен догадаться, что '15.03.17' - это дата
... а вот Oracle догадывается и выполняет неявное преобразование
...
Рейтинг: 0 / 0
30.03.2017, 15:37
    #39430258
почему <= воспринимается как <
Viewer,

Оракл догадывается, только если ты ему заранее объясняешь, либо явно говоришь.
Например, 15.03.2017 - это 15 марта 2017 года или 3 число 15го (некорректно введённого) месяца 2017 года?
...
Рейтинг: 0 / 0
30.03.2017, 15:40
    #39430263
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему <= воспринимается как <
Никто ни о чём не знает15.03.2017 - это 15 марта 2017 года или 3 число 15го (некорректно введённого) месяца 2017 года?по крайней мере, он пытается.
в отличие от некоторых
...
Рейтинг: 0 / 0
30.03.2017, 16:50
    #39430332
Altagracia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему <= воспринимается как <
Viewer, Спасибо)
...
Рейтинг: 0 / 0
30.03.2017, 17:23
    #39430358
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему <= воспринимается как <
ViewerORA__SQLКак я должен догадаться, что '15.03.17' - это дата
... а вот Oracle догадывается и выполняет неявное преобразованиелучше бы валил ошибку
...
Рейтинг: 0 / 0
30.03.2017, 20:02
    #39430456
ORA__SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему <= воспринимается как <
andreymxViewerпропущено...
... а вот Oracle догадывается и выполняет неявное преобразованиелучше бы валил ошибку
Элементарно. Сменить на уровне БД nls date format на что-нибудь экзотическое ...
...
Рейтинг: 0 / 0
30.03.2017, 21:35
    #39430499
колбасит
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему <= воспринимается как <
Код: plsql
1.
2.
3.
4.
> select to_char(to_date('01.01.01'), 'dd.mm.yy') m1 from dual;
M1
--------
01.03.17
...
Рейтинг: 0 / 0
30.03.2017, 21:44
    #39430503
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему <= воспринимается как <
AltagraciaПочему при в таком запросе:

Код: plsql
1.
2.
3.
4.
select name, date
from t1
where (date >= '15.03.17'
and date <= '17.03.17')



записи за 17.03.17 не будут включены?


за весь 17.03. может иногда не будут включены, за какую-то часть - точно будут, хотя бы за первую секунду. Зависит еще от типа данных пля date, Если это дата без времени, то будут включены данные за весь этот день, если дата со временем - только за первую секунду или милисекунду.
...
Рейтинг: 0 / 0
31.03.2017, 04:46
    #39430578
AnSi_Sr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему <= воспринимается как <
...
Рейтинг: 0 / 0
31.03.2017, 07:23
    #39430597
Viewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему <= воспринимается как <
по ссылке вышеIf you specify a date value without a time component, then the default time is midnight (00:00:00 or 12:00:00 for 24-hour and 12-hour clock time, respectively) ....
Therefore, if you query a DATE column, then you must either specify the time field in your query or ensure that the time fields in the DATE column are set to midnight.
Otherwise, Oracle may not return the query results you expect.
перевод от MasterZivза весь 17.03. может иногда не будут включены , за какую-то часть - точно будут, хотя бы за первую секунду . ...
Если это дата без времени, то будут включены данные за весь этот день ,
если дата со временем - только за первую секунду или милисекунду .
midnight - это миг между прошлым и будущим..
...
Рейтинг: 0 / 0
31.03.2017, 08:07
    #39430609
Viewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему <= воспринимается как <
Иногда лучше молчать, чем говорить .... проверено лично :)
ORA__SQLandreymxпропущено...
лучше бы валил ошибку
Элементарно. Сменить на уровне БД nls date format на что-нибудь экзотическое ...
Описываемые ниже события происходят исключительно на территории рабочей станции , и не имеют никакого отношения к исключительной собственности какой-либо БД...
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SQL> alter session set nls_date_format = 'DD.MM.RR';
Session altered.

SQL> select to_date('17.03.17') dd from dual;
DD
--------
17.03.17

SQL> alter session set nls_date_format = 'MM.DD.RR';
Session altered.

SQL> select to_date('17.03.17') dd from dual;
select to_date('17.03.17') dd from dual
               *
ERROR at line 1:
ORA-01843: not a valid month
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / почему <= воспринимается как < / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]