2016-03-23 2 views
0

Я создал данные таблицы в MS SQL Server, чтобы вставить его в Postgresql.postgres datetime field "x00008F4900000000"

Сценарий имеет такой формат вставки

INSERT INTO Bank_Draft_Information (Bank_Code, Draft_Type, Transaction_Type, Institution_Code, Serial_Number, Bank_Draft_Date, Total_Amount, Balance_Amount, Created_By, Created_On, Amended_By, Amended_On) 
VALUES 

(6, 'C', 'I', NULL, NULL, 0x00008F4900000000 AS DateTime, 1500.0000, 1000.0000, 1, 0x0000950400000000 AS DateTime, 19, 0x0000A32400000000 AS DateTime)); 

Got ошибка эта ошибка,

ошибка синтаксиса или вблизи "x00008F4900000000"

Более того, не имеют доступа к MS SQL Server db больше. Как я могу преобразовать это в объект времени даты postgres?

+1

Укажите, какую дату он действительно представляет, а затем используйте соответствующий литерал. –

+0

@GordonLinoff Я не знаю, в каком формате именно эта дата. Знаете ли вы? –

+0

Временная метка SQL Server не имеет ничего общего с «реальной» меткой времени. Это больше похоже на версию строки. Он содержит двоичные данные, которые не могут быть преобразованы во что-нибудь, что можно использовать вне SQL Server. –

ответ

0

От this article:

Итак, как SQL Server внутренне хранить даты? Он использует 8 байтов для хранения значения datetime - первых 4 для даты и второй 4 для времени. SQL Server может интерпретировать оба набора из 4 байтов как целые числа. Для части даты значением, хранящимся в SQL Server, является количество дней до или после базовой даты 1 января 1900 года. (...)

SQL Server сохраняет второе целое число за время, равное количеству часов тикает после полуночи. Второй содержит 300 тиков, поэтому тик равен 3,3 миллисекунды (мс). Вы можете видеть значения для тиков дней и часов, преобразовывая значение datetime в двоичное (8) значение и используя функцию подстроки, чтобы извлечь каждый набор из 4 байтов. Затем код на рисунке 3 преобразует каждый набор из 4 байтов в целое число.

Учитывая, что я предполагаю, что, вероятно, представляет x00008F49 количество дней, прошедших с 1 января 1900 года, а остальные строки, вероятно, представление времени. Поскольку это все 0, он представляет полночь.

 Смежные вопросы

  • Нет связанных вопросов^_^