Метка времени из 18 цифр по местному времени в запросе SQL - PullRequest
0 голосов
/ 26 февраля 2019

Я использую DB Browser для SQlite.В моей базе данных также есть дата и время, сохраненные в 18-значной метке времениПомогите, пожалуйста, преобразовать его в местное время в этом запросе:

SELECT * FROM message WHERE handle_id=52 ORDER BY date DESC;   

Я считаю, что это тип метки времени Unix, так как база данных основана на Mac.(Apple CoreD (nanosec) - это формат метки времени, спасибо varro) Вот несколько примеров из db:

561774860770410304 559334672583377600   

Я сталкивался с другим подобным вопросом (метка времени 18 цифр к местному времени), ноasker не требовался ответ на каком-либо конкретном языке или платформе.

Спасибо, Алиса

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Я думаю, что ваш случай может быть таким: https://stackoverflow.com/a/36822906/10498828.Разница в том, что ваши значения даты указаны в наносекундах, поэтому вам нужно сначала разделить на 1000000000:

select datetime(datecolumn/1000000000 + 978307200, 'unixepoch') from message 

Для этих значений:

561774860770410304 559334672583377600

приведенный выше код дает:

2018-10-21 00:34:20 2018-09-22 18:44:32
0 голосов
/ 27 февраля 2019

Не зная заранее формата метки времени, невозможно дать однозначный ответ, но я отправляю этот скрипт (который зависит только от инструмента командной строки sqlite3), чтобы помочь:

#!/bin/sh

printf "Enter timestamp: "
read number

sqlite3 <<EOS
.mode column
.width 12, 20

select 'Number:',     $number;
select 'Unix epoch:', datetime($number, 'unixepoch');
select 'Variant:',    datetime($number, 'unixepoch', '-70 years');
select 'Julian day:', datetime($number);
select 'Mac HFS+:',   datetime($number, 'unixepoch', '-66 years');
select 'Apple CoreD:';
select '  (seconds)', datetime($number, 'unixepoch', '+31 years');
select '  (nanosec)', datetime($number/1000000000, 'unixepoch', '+31 years');
select 'NET:',        datetime($number/10000000, 'unixepoch', '-1969 years');
EOS

Если вы запустите этоСценарий и введите свой номер 561774860770410304, вы увидите следующее:

% Enter timestamp: 561774860770410304
Number:       561774860770410304
Unix epoch:   -
Variant:      -
Julian day:   -
Mac HFS+:     -
Apple CoreD:
  (seconds)   -
  (nanosec)   2018-10-21 00:34:20
NET:          1781-03-12 09:14:37

Я буду догадываться, что, вероятно, "2018-10-21 00:34:20" ваша временная метка, и что соответственно "AppleCoreD (наносек) "" - это ваш формат метки времени (см. https://www.epochconverter.com/coredata).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...