Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сравнение дат / 10 сообщений из 10, страница 1 из 1
30.01.2017, 10:05
    #39394396
ArchiSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение дат
Возник следующий вопрос. Когда мы пишем
select .... from ...
where d_date < to_date('27.01.2017','DD.MM.YYYY')

для выполнения сравнения насколько я понимаю Оракл преобразует дату в секунды, а затем уже численные значения сравнивает? Тогда от какой даты идет отсчет?

Нашел следующий ответ в http://www.sql.ru/forum/1222766/otschet-vremeni-ot-kakoy-daty-proishodit
ElicНи от какой.
RTFM Datetime Data Types (FAQ) : "Dates are stored …"

При этом здесь http://www.sql.ru/forum/242681-1/format-daty-v-oracle пишут про 01.01.1970. Функция UNIX_TIMESTAMP(date) также отсчитывает секунды с 1 января 1970 года.
Также в топике http://www.sql.ru/forum/1222766/otschet-vremeni-ot-kakoy-daty-proishodit пишут Вячеслав ЛюбомудровСмех-смехом, а некоторые вещи отсчитываются от 1988 . Про что здесь идет речь?

И все таки интересно понять, что происходит когда происходит сравнение дат.
...
Рейтинг: 0 / 0
30.01.2017, 10:20
    #39394401
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение дат
ArchiSQLдля выполнения сравнения насколько я понимаю Оракл преобразует дату в секунды, а затем уже численные значения сравнивает?Заблуждаешься.
ArchiSQLТогда от какой даты идет отсчет?Читай мой ответ ещё раз.
...
Рейтинг: 0 / 0
30.01.2017, 17:03
    #39394877
ArchiSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение дат
ElicArchiSQLдля выполнения сравнения насколько я понимаю Оракл преобразует дату в секунды, а затем уже численные значения сравнивает?Заблуждаешься.
ArchiSQLТогда от какой даты идет отсчет?Читай мой ответ ещё раз.

Если "ни от какой", тогда непонятно как происходит сравнение двух дат, вернее как машина это делает.
...
Рейтинг: 0 / 0
30.01.2017, 17:06
    #39394881
ArchiSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение дат
"The database stores dates internally as numbers. Dates are stored in fixed-length fields of 7 bytes each, corresponding to century, year, month, day, hour, minute, and second." - это по ссылке от уважаемого Elic.
То есть получается сначала идет сравнение 1 байта, который соответствует веку, затем если значения одинаковы, тогда происходит сравнения 2 байта, соответствующего году и т.д.
Такова логика?
...
Рейтинг: 0 / 0
30.01.2017, 17:08
    #39394883
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение дат
ArchiSQLкак происходит сравнение двух дат, вернее как машина это делает.Побайтно:
ArchiSQLElic"Dates are stored …"
...
Рейтинг: 0 / 0
30.01.2017, 17:10
    #39394886
ArchiSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение дат
ArchiSQLТакже в топике http://www.sql.ru/forum/1222766/otschet-vremeni-ot-kakoy-daty-proishodit пишут Вячеслав ЛюбомудровСмех-смехом, а некоторые вещи отсчитываются от 1988

Интересно, про что здесь речь шла насчет отсчета с 1988 года, а не с 1 января 1970 года (это дата, я так понимаю, установлена по дефолту за начало отсчета)
...
Рейтинг: 0 / 0
30.01.2017, 17:12
    #39394888
ArchiSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение дат
ElicArchiSQLкак происходит сравнение двух дат, вернее как машина это делает.Побайтно:
ArchiSQLпропущено...


Спасибо за ответ!)
...
Рейтинг: 0 / 0
30.01.2017, 17:16
    #39394894
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение дат
ArchiSQL1 января 1970 года (это дата, я так понимаю, установлена по дефолту за начало отсчета)Опять двадцать пять.
...
Рейтинг: 0 / 0
30.01.2017, 17:24
    #39394906
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение дат
ArchiSQL,


1 января 1970 годаПрисоединен к:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing opt
ions

SQL> select sysdate-1e10 from dual;
select sysdate-1e10 from dual
*
ошибка в строке 1:
ORA-01841: (полный) год должен быть между -4713 и +9999, и не 0
...
Рейтинг: 0 / 0
01.02.2017, 01:51
    #39395937
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение дат
SCN, например, проверяется, что он не превышает 16384*количество секунд с 1 января 1988
Даты в контролах и заголовках файлов тоже хранятся во внутреннем 4-х байтном формате, содержащем кол-во секунд с 01-01-1988 (так же как и проверка SCN, там есть небольшое допущение, что каждый месяц содержит 31 день)
Несколько ошибок на эту тему
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
hermes.oracle> oerr ora 351
00351, 00000, "recover-to time invalid"
// *Cause:  The time specified in a recover-until statement must
//          be after January 1st 1988.
// *Action: Specify a time after January 1st 1988.

hermes.oracle> oerr ora 1282
01282, 00000, "date range specified is invalid"
// *Cause: startTime may be greater than endTime.  startTime or endTime may be
//         greater than year 2110.  startTime may be less than year 1988.
// *Action: Specify a valid date range.

hermes.oracle> oerr ora 1513                                                                                  
01513, 00000, "invalid current time returned by operating system"
// *Cause:  The operating system returned a time that was not between
//          1988 and 2121.
// *Action: Correct the time kept by the operating system.
Особенно это прикольно, что первая (вторая) версия Oracle Database вышла в 1979 году, а в 1988 вышла уже Oracle 6
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сравнение дат / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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