Как отобразить следующее в «читаемом» формате даты и времени? - PullRequest
5 голосов
/ 02 мая 2011
Database : SQLite  
Column : SomeTable.Logged (DateTime)  

Я использую компонент System.Data.SQLite.Я сохраняю значение даты и времени в столбце Logged как метки.например, используя c #

DateTime.Now.Ticks;

Пример значения, которое сохраняется в SomeTable.Logged:

634399267463299880  

Как, используя sql, отобразить это в «обычную» дату?например, '01-05-2011 13:45:22'?

Мне известна страница http://www.sqlite.org/lang_datefunc.html, но я не могу заставить вещи работать так, как я хочу.

1 Ответ

22 голосов
/ 02 мая 2011

Попробуйте:

SELECT strftime('%Y-%m-%d %H:%M:%S',
                SomeTable.Logged/10000000 - 62135596800,
                'unixepoch')

, где

 62135596800 = DateTime(1970, 1, 1, 0, 0, 0).Ticks/10000000
             = number of seconds elapsed from 01/01/0001 00:00:00 
                                         until 01/01/1970 00:00:00;
 => SomeTable.Logged/10000000 - 62135596800
             = number of seconds elapsed from 01/01/1970 00:00:00
                                         until your date

 => 'unixepoch' to convert it to date value
 => '%Y-%m-%d %H:%M:%S' to format

пример:

SELECT strftime('%Y-%m-%d %H:%M:%S',
                634398543220000000/10000000 - 62135596800,
                'unixepoch')

==> 2011-05-01 13:45:22
...