#mysql #sql #tsql
#mysql #sql #tsql
Вопрос:
У меня есть столбец id
в моей таблице C_Log
, к которому я хочу применить битовый сдвиг на 32 бита вправо при интеграции этой задачи с остальной частью запроса SELECT!
После применения сдвига битов к идентификатору 6670501767432108171
я должен получить этот номер временной метки 1553097220
(оба десятичные).
Комментарии:
1. Вы используете MySQL, Sybase или MS SQL Server?
2. @jarlh Вероятно… : P (Извините, просто пошутил. Сегодня пятница, вторая половина дня.)
Ответ №1:
В MySQL вы можете напрямую выполнить сдвиг вправо:
SELECT ..., (id >> 32) AS ts, ... FROM C_log ...
В SQL Server нет сдвигов битов, поэтому вам нужно выполнить эквивалентное деление и взять FLOOR
:
SELECT ..., (id / 4294967296) AS ts, ... FROM C_log ...