Это сотни наносекунд (1 нс = 1/10^9 секунд) с самого начала общего века (Калифорния) или Рождества. Для преобразования даты из этого формата в обычной даты:
1. Сначала вам нужно преобразовать 633869892000000000 = YourDateHundredsOfNanoSecondsCA из 100'nanoseconds в формате Unixepoch (в секундах с 1 января 1970 года до вашей даты) по формуле:
(*) * 24 * 60 * 60 * 1E9/100) * 100/1E9,
, где: (*) * (365 + 1/4-1/100 + 1/400), 0) :
1.1 ROUND (1969 * (365 + 1/4-1/100 + 1/400), 0) -2) = DaysOf1970Years - круглое количество дней от Jeasus, родившихся до 1 января 1970 года.
1.2 HundredsOfNanoSecondsOf1970Years = DaysOf1970Years * 24 * 60 * 60 * 1E9/100 - сотни наносекунд от начала общего века до начала эпохи Unix (1 января 1970 года).
1.3 YourDateInUnixEpochSeconds = (YourDateHundredsOfNanoSecondsCA-HundredsOfNanoSecondsOf1970Years) * 100/1E9 - количество секунд с 01.01.1970 до вашей даты.
2. Преобразовать Unix Epoch формат даты для чтения формат с помощью функции (я дам пример для SQLite):
ВЫБОР DateTime (YourDateInUnixEpochSeconds, 'unixepoch');
Для примера вы можете скопировать эту строку в редакторе SQL запросов в SQLiteStudio и запустить:
ВЫБРАТЬ даты и времени ((633869892000000000- (ROUND (1969 * (365 + 1/4-1/100 + 1/400), 0) -2) * 24 * 60 * 60 * 1E9/100) * 100/1E9, 'unixepoch');
и в результате вы получите «2010-12-19 17:00:00»
Для меня это утверждение - SELECT datetime ((DateColumn- (ROUND (1969 * (365 + 1/4-1/100 + 1/400), 0) -2) * 24 * 60 * 60 * 1E9/100) * 100/1E9, 'unixepoch') от YourTable; - построил даты на год вперед. Но это второе высказывание, предложенное @Gizboy, похоже, отлично работает (и это также немного более чисто) - выберите datetime (DateColumn/10000000 - 62135596800, 'unixepoch') из YourTable; Спасибо вам обоим в любом случае! – leoneboaventura