Как извлечь только дату из значения SQL datetime в SSIS? - PullRequest
1 голос
/ 18 декабря 2009

Как мне преобразовать дату и время в SSIS?

Я пытаюсь выполнить агрегированный запрос, который сгруппирует к определенной дате. Для этого я пытаюсь извлечь только часть даты из отметки времени (сохраненной как дата), чтобы я мог выполнить GROUP BY на следующем шаге.

Я посмотрел на функцию DATEPART, но, похоже, мне пришлось бы вызывать ее несколько раз, чтобы получить месяц, дату и год, объединить их вместе и затем проанализировать новую дату. Должен быть лучший способ сделать это.

Ответы [ 5 ]

6 голосов
/ 18 декабря 2009

В SSIS вы можете использовать Преобразование преобразования данных , для входного значения у вас есть DT_DBTIMESTAMP и для использования вывода DT_DBDATE

2 голосов
/ 18 декабря 2009

Мой первый вопрос: если вы имеете дело с данными, содержащимися в базе данных на одном и том же сервере, почему бы просто не выполнить все ваши приведения и группировки в SQL Server, прежде чем переносить данные в SSIS? По соображениям производительности лучше всего выполнять массивацию данных SQL Server, прежде чем переносить их в SSIS. Однако, если вы имеете дело с разнородными данными (oracle, excel, текстовые файлы, данные из другого экземпляра сервера sql), то вы можете использовать преобразование производного столбца и преобразовать дату с использованием преобразования (DT_DBDATE), а затем использовать компонент агрегата сделай свою группу.

0 голосов
/ 18 декабря 2009

Здесь вы можете сделать это в T-SQL, я предполагаю, что SSIS обеспечивает полный доступ к функциям SQL Server:

 SELECT CAST( FLOOR( CAST(getdate() AS float) ) AS datetime)

По сути, он преобразует дату в число с плавающей точкой (время - это доля дня), использует слово floor для отсечения десятичной дроби (приведение к int может округлить в большую сторону), а затем возвращает значение с плавающей точкой обратно к дате.

Эффективно, работает и не требует нескольких вызовов DATEPART ()

0 голосов
/ 18 декабря 2009

выберите DATEADD (дд, 0, DATEDIFF (дд, 0, GETDATE ()))

0 голосов
/ 18 декабря 2009

К сожалению, это лучший способ сделать это (на мой взгляд), и в зависимости от столбца назначения (если именно там заканчивается поток), на нем все равно будет 00: 00: 00: 000. Но вы, наверное, уже поняли, что = P.

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