SQL Server не предлагает тип данных bit(32)
(например, Postgres). Мне нужно преобразовать string
в bit(32)
, а затем в bigint
, а затем в timestamp
.
Могу привести пример:
Мне нужно преобразовать эту строку x5c081ca4 в битовое (32) значение: 01011100000010000001110010100100, затем в bigint: 1544035492, а затем в метку времени: 2018-12-05 19: 44: 52 + 01
В Postgres это будут функции: TO_TIMESTAMP (timeconv :: bit (32) :: BIGINT)
Есть идеи, как я могу решить проблему?
such as Postgres
? Имея так мало информации, единственный ответ -Yes to all
- person Panagiotis Kanavos   schedule 31.08.2020bit(32)
, если настоящая цель -int
? Вопрос в том, как разобрать 32-битную шестнадцатеричную строку? - person Panagiotis Kanavos   schedule 31.08.2020SELECT DATEADD(SECOND, CONVERT(INT, CONVERT(BINARY(4), '0x5c081ca4', 1)), '19700101')
. По иронии судьбы, более сложной частью этой проблемы является преобразование метки времени в местное время, если это то, что вам нужно - T-SQL теперь может переключаться между часовыми поясами, но по-прежнему не имеет простой функции для текущего имени местного часового пояса. Вы можете преобразовать результат вDATETIMEOFFSET
, если вас устраивает только время UTC. - person Jeroen Mostert   schedule 31.08.2020TODATETIMEOFFSET(DATEADD(SECOND, CONVERT(INT, CONVERT(BINARY(4), '0x5c081ca4', 1)), '19700101')), CURRENT_TIMEZONE())
Но это не работает. - person Matzka   schedule 02.09.2020CURRENT_TIMEZONE()
я также пробовалSYSDATETIMEOFFSET()
, но безуспешно. - person Matzka   schedule 02.09.2020