|
|
|
Подскажите как лучше конвертировать время в секунды и обратно ?
|
|||
|---|---|---|---|
|
#18+
Всем привет. Все даты в базе хранятся в секундах как конвертировать эти даты в/из нормальный формат DATETIME а также как лучше хранить разницу времен и манипулировать ими ? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 11:32 |
|
||
|
Подскажите как лучше конвертировать время в секунды и обратно ?
|
|||
|---|---|---|---|
|
#18+
секунды в датетиме dbinfo('utc_to_datetime',sh_curtime) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 14:07 |
|
||
|
Подскажите как лучше конвертировать время в секунды и обратно ?
|
|||
|---|---|---|---|
|
#18+
Для хранения и манипуляции с временными периодами в Информиксе существует специальный тип Interval ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 17:21 |
|
||
|
Подскажите как лучше конвертировать время в секунды и обратно ?
|
|||
|---|---|---|---|
|
#18+
Жорик Все даты в базе хранятся в секундах как конвертировать эти даты в/из нормальный формат DATETIME а также как лучше хранить разницу времен и манипулировать ими ? Если быть точным, то "ДАТЫ в БАЗЕ" хранятся в днях. Если речь идет о временной точке, то тогда в секундах. Для преобразования различных временных точек есть куча функций. Например, EXTEND. Для получения некоторого представления о возможных преобразованиях того же текущего времени могу предложить посмотреть нижеследующий работающий скрипт . ------------------------------------------------------------ -- With IDS 7.3x use the following expressions in a view -- to provide various ways of interpreting a CURRENT TIME -- -- V.Shulzenko DBA_Tools ------------------------------------------------------------ SELECT ------------------------------------------------------------ -- CURRENT TIME ------------------------------------------------------------ -- в формате DATETIME (local time) CURRENT standart_current -- standart function ,CURRENT YEAR TO SECOND current_year2sec -- to get the server's local time ,CURRENT year to fraction(5) current_fraction5 -- время в секундах с 1.1.1970 превратить в datetime (локальное время) ,DBINFO('utc_to_datetime',sh_curtime) local_sysshmvals ,DBINFO('utc_to_datetime',DBINFO('utc_current')) local_dbinfo -- количество секунд с 1.1.1970 ,sh_curtime seconds_shmvals ,DBINFO('utc_current') seconds_dbinfo -- текущее время внутри процедуры (с точностью до целых секунд и по Гринвичу) UTC -- (by Leonid Vorontsov) -- (не работает после 9 сентября 2001 - В.Шульженко) -- ,DATETIME( 1970-01-01 00:00:00 ) YEAR TO SECOND -- + sh_curtime UNITS SECOND GMT_sysshmvals -- После 2001-09-09 01:46:39 (by Alex Gradinar) ,CASE WHEN sh_curtime > 999999999 THEN DATETIME(1970-01-01 00:00:00) YEAR TO SECOND + 999999999 UNITS SECOND + (sh_curtime - 999999999) UNITS SECOND ELSE DATETIME( 1970-01-01 00:00:00 ) YEAR TO SECOND + sh_curtime UNITS SECOND END AS GMT_sysshmvals -- The value of dbinfo('utc_current') varies during the execution of a statement, but the value of CURRENT does not. -- SPL function in the IIUG Software Archive UNIXTIME_TO_DATETIME converts an integer number of seconds since -- the Epoch (1970-01-01 00:00:00 +00:00) into a datetime year to second (in UTC). -- Должна возвращать таймзону, например GMT+2 (но не работает) ,DBINFO('get_tz') time_zone -- ?? --------- -- A. Daugava (SQL.RU) -- create function "informix".cur_time() RETURNING DATETIME YEAR TO SECOND; -- DEFINE D DATETIME YEAR TO SECOND; -- select EXTEND (mdy(9,9,2001),YEAR TO SECOND) -- +(sh_curtime-999982800-3600) UNITS SECOND INTO D from sysmaster:sysshmvals; -- Одна проблема, переход на летнее время не учитывается. -- mdy(9,9,2001) - в эту дату количество секунд в unixtime зашкаливает за миллиард, -- по крайней мере на 7-ке и 9.2 есть проблемы со сложением UNITS SECOND с такими цифрами, -- поэтому с помощью поправочного коэфициента "999982800" подбираем нужное нам время. -- "-3600" - дополнительная поправка на зимнее время :-). ------------------------------------------------------------ -- When or How long has a user been connected ,(select -- после 09.09.01 показывает текущее время, т.е работает неправильно. -- extend(current - connected units second), hour to second) elapsed_time -- нижеследующие работают всегда правильно -- extend(dbinfo('utc_to_datetime', connected),hour to second) start_time current hour to second - extend(dbinfo('utc_to_datetime',connected),hour to second) elapsed_time from syssessions where sid=dbinfo('sessionid') ) time_connected ------------------------------------------------------------ -- Разница с Гринвичем (т.е. временной пояс) (работает правильно только до 09.09.01) -- ,extend(current - (sh_curtime-1) units second, hour to second) GMT_Time_plus -- Разница с Гринвичем (т.е. временной пояс) только для GMT+ ,extend((current-999999999 units second) - (sh_curtime-999999999-1) units second, hour to second) GMT_Time_plus1 ,DBINFO('utc_to_datetime',sh_curtime) - (DATETIME(1970-01-01 00:00:00) YEAR TO SECOND + 999999999 UNITS SECOND + (sh_curtime - 999999999) UNITS SECOND) GMT_Time_plus2 ------------------------------------------------------------ -- Время сбора статистики на сервере ------------------------------------------------------------ ,current day to second - EXTEND(dbinfo('utc_to_datetime',sh_pfclrtime),day to second) statistic_time ------------------------------------------------------------ -- USEOSTIME=0 в некоторых версиях приводит к ошибке для fraction(5) (7.31.ТС2-5) -- Лечится установкой USEOSTIME=1. ------------------------------------------------------------ FROM sysshmvals; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 20:07 |
|
||
|
Подскажите как лучше конвертировать время в секунды и обратно ?
|
|||
|---|---|---|---|
|
#18+
Добавлю свои 5 копеек, может понадобится. Только работает с секундами Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2005, 09:30 |
|
||
|
|

start [/forum/topic.php?fid=44&fpage=60&tid=1609048]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 306ms |

| 0 / 0 |
