DT_DBTIMESTAMP2, имеющий только 3 цифры

У меня (DT_DBTIMESTAMP2,7)GETDATE() в столбце "Преобразование производного столбца служб SSIS" и "Таблица" с датой time2(7). Несмотря на то, что я установил 7-значную вторую шкалу в обоих, но, кажется, это только 3-значный. Например, я ожидал, что "2018-05-02 16:45:15.6192346", но приходит "2018-05-02 16:45:15.6190000".

Причина, по которой мне нужны миллисекунды, я хотел бы отсортировать последнюю запись из любых дубликатов, используя метку времени. Я понял, что только 3-значная секундная шкала не достаточна для этой цели.

За исключением преобразования производных столбцов и столбцов таблицы, есть ли какие-либо обязательные настройки в пакете служб SSIS? Любые советы будут оценены.

2 ответа

Хотя это почти то же самое, что сказал HoneyBadger, я немного расширяюсь, так как OP не использует GETDATE() выражение в SQL Server. Значение 2018-05-02 16:45:15.619 не может быть возвращен GETDATE() (Transact-SQL), поскольку он точен только до 1/300 секунды (таким образом, конечная цифра может быть только каждые 0,3 и 7 (технически 0, 333333333~ и 666666666~, поэтому последняя цифра 7 Округлил)).

В SSIS GETDATE() выражение возвращает тип данных DB_TIMESTAMP, Согласно документации:

Структура метки времени, которая состоит из года, месяца, дня, часа, минуты, секунды и дробных секунд. Дробные секунды имеют максимальную шкалу из 3 цифр.

Таким образом, последние 4 символа теряются. К сожалению, я не верю, что в SSIS есть функция, которая возвращает текущую дату и время с необходимой вам точностью. Таким образом, если вам нужен этот высокий уровень, вам, вероятно, нужно использовать выражение в SQL Server, которое делает, например, SYSDATETIME() что рекомендовал HoneyBadger.

GETDATE() возвращает datetime, вы должны использовать SYSDATETIME() вместо. Смотрите документацию.

редактировать

Как отметил Ларну, вы, вероятно, используете выражение SSIS GETDATE, а не SQL-выражение GETDATE, как я предполагал. Дело в том, что более или менее то же самое. GETDATE возвращает DT_DBTIMESTAMPгде "Дробные секунды имеют максимальную шкалу из 3 цифр". ( Источник).

Другие вопросы по тегам