Как сохранить точность Oracle TimeStamp 6 в SQL Server DateTime - PullRequest
1 голос
/ 20 апреля 2011

У меня есть сценарий, в котором мне нужно перенести данные из таблицы Oracle в таблицу SQL Server.Столбец в Oracle - метка времени (6) 6, являющаяся точностью.Теперь я не могу отправить данные Oracle в строковом формате.Я извлекаю данные прямо из таблицы Oracle, поэтому не могу отформатировать их на стороне оракула.Что я могу сделать, это отформатировать данные с использованием VB6.Format, чтобы сделать его подходящим для SQL Server DateTime.Я делаю это для Oracle Date to SQL Server Datetime.

Можно ли сделать нечто подобное для отметок времени и Datetime.

1 Ответ

4 голосов
/ 20 апреля 2011

Это зависит от версии используемого вами сервера SQL.Как отметил @onedaywhen в своем комментарии, вы можете использовать DATETIME, но вы потеряете некоторую точность, поскольку DATETIME с точностью до 3 десятичных цифр (точность 3,33 миллисекунды);однако, если вы используете более раннюю версию SQL Server, это то, что у вас есть.

Если вы работаете с SQL Server 2008, вы можете использовать DATETIME2 с точностью до 100 наносекунд или 7 цифр, что будет соответствовать тому, что вы пытаетесь сделать.

Если вы действительно хотеличтобы вы могли взломать что-то, чтобы представлять даты / время, используя столбцы DECIMAL.Вы можете сделать столбцы DECIMAL (20, 6) и отформатировать их как

YYYYMMDDHHIISS.ffffff

, где

YYYY=year
MM=month (01-12)
DD=day
HH=hour (24 hour clock)
II=minutes
SS=seconds
ffffff=fractional seconds

Реализация оставлена ​​какупражнение для читателя.

(CAVEAT: если вы решите использовать что-то подобное, имейте в виду, что этот же формат даты / времени использовался в качестве основы для хронометража в оригинальной версии Necronomicon, и, по слухам, это привело непосредственно кавтор, Абдул Альхазред, известный как «безумный араб».: -)

Ктулху фхагн.

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