|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
В таблице дата храниться в формате DOUBLE, например 40450.669306 попробовал выбрать так Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2012, 11:55 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
пробовал выбрать как Код: sql 1.
какая-то ерунда получается, "40450.669306","40451","-4602-08-25 12:00:00" да и round наверное неправильно применять, он ведь округляет. Возможно ли получить нормальную дату из DOUBLE? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2012, 11:57 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
Попробуйте: strftime('%Y-%m-%d %H:%M:%S', createdate) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2012, 12:19 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
Или так: datetime(round((createdate - 2440587.5)*86400.0)) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2012, 12:22 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
MinistrBob, Надо внимательно читать документацию. Тип REAL (он же DOUBLE) в качестве даты интерпретируется как дни по юлианскому календарю (julian days), где дробная часть - время. А ваша дата задана в другой системе и отсчитывается от полуночи 1.01.1900. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2012, 22:52 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
Для 40450.669306 metosПопробуйте: strftime('%Y-%m-%d %H:%M:%S', createdate) -460-08-25 04:03:48 - криво metosИли так: datetime(round((createdate - 2440587.5)*86400.0)) 1698789-19650109-20 -19:-12:-55 - тоже криво RXLНадо внимательно читать документацию. Тип REAL (он же DOUBLE) в качестве даты интерпретируется как дни по юлианскому календарю (julian days), где дробная часть - время. А ваша дата задана в другой системе и отсчитывается от полуночи 1.01.1900. У меня есть конкретная задача = к столбцу с датами нужно прибавить 1 год. Я специалист в Oracle. Sqllite я вообще вижу в первый раз. Изучать его именно для выполнения одной конкретной задачи, у меня нет ни времени ни желания. Из документации прочитал только про Date And Time Functions и попробовал сделать выборки так как там написано - ничего не получилось. Поэтому и прошу помощи на форуме. Вы не могли бы привести конкретный пример как сделать нормальную выборку для дат котороые отсчитываются от полуночи 1.01.1900? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2012, 10:29 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
MinistrBob, Вам выше уже приводили формулу. Юлианский календарь отличается от григорианского на величину "2440587.5" дней. Про вашу дату я уже писал выше. Найти нужное смещение элементарно: Код: sql 1. 2.
Получаются две формулы: Код: plaintext 1. 2.
А насчет "некогда" вы зря. Получается, что остальным есть когда читать документацию и по SQLite, и по Oracle, и по куче других вещей, а вам некогда прочесть одну (!) страницу: http://sqlite.org/lang_datefunc.html ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2012, 11:02 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
datetime(round(createdate*86400 - 2209161600)) 86400 - количество секунд в дне 2209161600 = 25569 дней - разница между julian и unix time ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2012, 11:31 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
metosdatetime(round(createdate*86400 - 2209161600)) 86400 - количество секунд в дне 2209161600 = 25569 дней - разница между julian и unix time не пойдет, т.к. для 40450.669306 возвращает 3515623-42107381-19 12:00:00 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2012, 13:57 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
Так datetime(createdate*86400 - 2209161600, 'unixepoch') или так datetime(createdate + 2415018.5) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2012, 15:31 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
> MinistrBob > В таблице дата храниться в формате DOUBLE, например 40450.669306 > У меня есть конкретная задача = к столбцу с датами нужно прибавить 1 год. Я специалист в Oracle. Спец, выясни, каким преобразованием привели дату к формату DOUBLE, напиши функцию обратного преобразования, и НЕ НУДИ в пятницу... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2012, 19:36 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
скукотища, Товарищ видимо думает, что в SQLite должен быть сервис, подобный Oracle. Так вот: практически весь сервис в SQLite стоится на базе самого приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2012, 14:33 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
RXLВам выше уже приводили формулу. Юлианский календарь отличается от григорианского на величину "2440587.5" дней. Про вашу дату я уже писал выше. Найти нужное смещение элементарно: К сожалению все вышеприведенные формулы возвращали неверный результат (я показал на примерах) RXLА насчет "некогда" вы зря. Получается, что остальным есть когда читать документацию и по SQLite, и по Oracle, и по куче других вещей, а вам некогда прочесть одну (!) страницу: http://sqlite.org/lang_datefunc.html Ну это вы зря, почитайте мой предыдущий пост внимательно. Именно эту то главу документации я как раз и почитал, но там нет конкретных формул для 01.01.1900 и 2415020.5. Там только есть один пример Код: sql 1. 2.
я его тоже пробовал, для 40450.669306 он возвращает лажу - 1698789-19650109-20 -19:-12:-55 скукотища> MinistrBob > В таблице дата храниться в формате DOUBLE, например 40450.669306 > У меня есть конкретная задача = к столбцу с датами нужно прибавить 1 год. Я специалист в Oracle. Спец, выясни, каким преобразованием привели дату к формату DOUBLE, напиши функцию обратного преобразования, и НЕ НУДИ в пятницу... Очень удобно прикрыться анонимным ником и поучать других не боясь при этом получить в рыло... Если бы я мог, я бы выяснил что там за преобразование, но у меня нет исходных текстов приложения которое пишет в базу. RXLскукотища, Товарищ видимо думает, что в SQLite должен быть сервис, подобный Oracle. Так вот: практически весь сервис в SQLite стоится на базе самого приложения. Я не понял о каком сервисе в Oracle вы говорите. Только если вы не хотите помогать конкретным советом, зачем засорять форум непонятными высказываниями. metosТак datetime(createdate*86400 - 2209161600, 'unixepoch') или так datetime(createdate + 2415018.5) Вот спасибо metos , вот это действительно помощь а не болтовня, оба варианта возвращают один и тот же человеческий результат (40450.669306 => 2010-09-29 16:03:48) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2012, 10:08 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
> MinistrBob > Очень удобно прикрыться анонимным ником и поучать других не боясь при этом получить в рыло... Лупи по так, - я поймаю. > Если бы я мог, я бы выяснил что там за преобразование, но у меня нет исходных текстов приложения которое пишет в базу. Специалист ничего не слашал про Microsoft Visual Basic и про тамошний формат даты ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2012, 17:22 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
скукотищаСпециалист ничего не слашал про Microsoft Visual Basic и про тамошний формат даты ? Аналогичный формат встречается и в других средах. Например, продукты Borland их используют. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2012, 22:25 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
MinistrBob Возможно ли получить нормальную дату из DOUBLE? Возможно. Справки надо читать. Тип TDateTime содержит значение даты и времени. Она сохраняется как переменная Double, с датой как целая часть, а время как дробная. Дата сохраняется как число дней с 30 декабря 1899. Пример: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2012, 12:14 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
MinistrBobУ меня есть конкретная задача = к столбцу с датами нужно прибавить 1 год. На вскидку как-то так будет: Код: sql 1.
вместо '+40450.669306 day' ставите нужные данные из таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2012, 14:14 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
AlexbootchMinistrBobВозможно ли получить нормальную дату из DOUBLE? Возможно. Справки надо читать. Тип TDateTime содержит значение даты и времени. Она сохраняется как переменная Double, с датой как целая часть, а время как дробная. Дата сохраняется как число дней с 30 декабря 1899. Пример: Код: sql 1.
Чего-то я не врубился. А в sqlite есть тип TDateTime ??? Вот статья документации Datatypes In SQLite Version 3 - чего-то я там такого типа не вижу. Вы вообще тему читали? Вы пишете что "Дата сохраняется как число дней с 30 декабря 1899", другие пишут что дата отсчитывается от полуночи 1.01.1900. Ваш запрос SELECT round((julianday(datetime('1899-12-30 00:00:00', '+40450.669306 day', '+1 years')) -julianday('1899-12-30 00:00:00')), 6); возвращает 40815.669306 это SELECT datetime(40815.669306); -4601-08-25 04:03:48 не похоже на корректный результат ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2012, 15:57 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
MinistrBobЧего-то я не врубился. А в sqlite есть тип TDateTime ??? Вот статья документации Datatypes In SQLite Version 3 - чего-то я там такого типа не вижу. Нету SQLite такого типа. Справка из Delphi. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2012, 16:26 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
MinistrBob Ваш запрос SELECT round((julianday(datetime('1899-12-30 00:00:00', '+40450.669306 day', '+1 years')) -julianday('1899-12-30 00:00:00')), 6); возвращает 40815.669306 это SELECT datetime(40815.669306); -4601-08-25 04:03:48 не похоже на корректный результат Это вообще что такое за бред: SELECT datetime(40815.669306); -4601-08-25 04:03:48 Чего вы тут хотите получить? Мой запрос корректно работает, к вашей дате 40450.669306 прибавляет один год и получается 40815.669306 в нужном вами формате. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2012, 16:31 |
|
Возможно ли прочитать дату и время из DOUBLE ?
|
|||
---|---|---|---|
#18+
Можете проверить Код: sql 1.
2010-09-29 16:03:48 Код: sql 1.
2011-09-29 16:03:48 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2012, 16:34 |
|
|
start [/forum/topic.php?fid=54&msg=37713115&tid=2009051]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 150ms |
0 / 0 |