Конференция "Базы" » Нужно преобразовать в формат TDateTime. [D6, D7, MSSQL]
 
  • Alexandra (06.08.08 14:46) [0]
    подскажите, Есть формат даты:
    The number of seconds since 0000 Universal Time Code (UTC) 1970
    Нужно преобразовать в формат TDateTime.
    Подскажите как это сделать в MS SQL?
    спасибо.
  • Medbe}I{onok XML © (06.08.08 14:49) [1]
    а на mssql есть тип tdatetime?
  • sniknik © (06.08.08 15:04) [2]
    > The number of seconds since 0000 Universal Time Code (UTC) 1970
    уточни, у тебя точно дата представлена количество секунд с 1970г (как написано) или гринвичь? (GETUTCDATE()),
    если секунды то очень просто, DATEADD + BOL (типа F1 для mssql), добавляешь их к основе (1970г) получаешь необходимое.
  • Alexandra (06.08.08 15:27) [3]
    > sniknik
    Да, у меня точно этот формат .спасибо попробую..
  • Alexandra (07.08.08 14:16) [4]
    >sniknik
    у меня получилось время это по гринвичу,
    а нам надо локальное. И я не могу просто прибавить или отнять часы, т к информация с разных городов. Теперь что подскажите делать ?
  • Anatoly Podgoretsky © (07.08.08 14:51) [5]
    По Гринчичу или UTC
  • sniknik © (07.08.08 17:28) [6]
    с гринвича локальный просто так не получить... как раз таки потому, что "информация с разных городов", у каждого разный часовой пояс, переход на зимнее время то делается то нет, а когдато вообще не делалось...

    просто можно только "привести" время к своему, т.е. сколько было по местному тогда когда "тот" город сохранил свое время.
    если без учета, что во время сохранения действовало "зимнее" время, то добавить к вашему разницу в минутах - DATEDIFF(mi, GETUTCDATE(), GETDATE()).
    ... или отнять? сам смотри.
    и еще посмотри на sql.ru, видел там когдато более сложные процедуры, учитывающие эти переходы/не переходы времени.
  • Alexandra (11.08.08 09:35) [7]
    спасибо!
  • Anatoly Podgoretsky © (11.08.08 16:32) [8]
    Не надо приводить к своему, как раз для этого, для независимости и существует UTC.
    UTC <> GMT - хотя в Линуксовских серверах почему то ставят знак равенства, пишут GMT но читать надо UTC, но можно и ошибиться, если источник с нулевого меридиана.

    В Виндоус вся работа ведется в основном с UTC, оно же System, которое потом преобразовывается в локальное (Local) но его легко можно перевести в любую временную зону, а вот обратно нет.
 
Конференция "Базы" » Нужно преобразовать в формат TDateTime. [D6, D7, MSSQL]
Есть новые Нет новых   [134473   +28][b:0][p:0]