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 цифр". ( Источник).