[英]18 digit time stamp to local time within SQL query
我正在為SQlite使用數據庫瀏覽器。 我的數據庫還具有以18位時間戳記存儲的日期時間。 請在以下查詢中幫助將其轉換為本地時間:
SELECT * FROM message WHERE handle_id=52 ORDER BY date DESC;
我相信這是unix時間戳的一種,因為數據庫基於mac。 (Apple CoreD(nanosec)是時間戳格式,謝謝varro)這是db中的幾個示例:
561774860770410304 559334672583377600
我遇到了另一個類似的問題(本地時間的18位時間戳),但詢問者不需要任何特定語言或平台的答案。
謝謝愛麗絲
如果不事先知道時間戳格式,就不可能給出確切的答案,但是我提交了這個腳本(僅取決於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”是您的時間戳,因此“ Apple CoreD(納秒)”是您的時間戳格式(請參閱https://www.epochconverter.com/coredata ) 。
我認為您的情況可能是這樣的: 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.