SQL Вывод даты задания сервера отличается от вывода при отладке SSIS. - PullRequest
0 голосов
/ 09 июля 2020

Итак, у нас есть задание SQL, которое преобразует данные в вывод определенной даты в файле CSV. Это всегда отлично работало. Недавно мы перешли на другой SQL Сервер, и теперь проблема в том, что запрос, используемый для преобразования даты и времени в указанный c формат, который нам нужен, выглядит следующим образом:

SET DATEFORMAT DMY;
DECLARE @Date as Date
SET @Date = ?

SELECT [SeqNr] + 100000 as 'SeqNr'
      ,CONVERT(VARCHAR,[Start_DateTime],104) + ' ' + CONVERT(VARCHAR,[Start_DateTime],108) as 'Start_DateTime'
      ,CONVERT(VARCHAR,[Answered_DateTime],104) + ' ' + CONVERT(VARCHAR,[Answered_DateTime],108) as 'Answered_DateTime'
      ,CONVERT(VARCHAR,[Term_DateTime],104) + ' ' + CONVERT(VARCHAR,[Term_DateTime],108) as 'Term_DateTime'
      ,[End_Status]
      ,'' as 'End_Status2'
      ,'' as 'ReasonCode'
FROM [RAW_DATAVAULT].[dbo].[H100S1_zendeskChat]
WHERE [EndDate] IS NULL AND CAST([Start_DateTime] as Date) = @Date
ORDER BY [Start_DateTime]

Если вы запустите это и посмотрите на CSV формат одной строки:

372278;01.07.2020 04:25:02;01.07.2020 04:36:36;01.07.2020 05:26:59;Answered;;

Однако запустите тот же пакет через SQL задание агента сервера, и результат будет следующим:

372278;07.01.2020 04:25:02;07.0.2020 04:36:36;01.07.2020 05:26:59;Answered;;`

А я не могу понять, почему переключился день месяца? Локаль - 1043 (голландский), запрос даже указывает установку DMY в качестве формата даты, и все это не должно иметь значения, потому что преобразование выполняется в строку.

Итак, какая настройка в SQL Server неверна что это меняет вывод? Даже изменение SQL настроек языка / времени сервера не имело значения.

Я немного затрудняюсь найти причину этого.

1 Ответ

0 голосов
/ 09 июля 2020

При использовании функции FORMAT() это не зависит от каких-либо настроек сервера.

SQL

DECLARE @Start_DateTime DATETIME = GETDATE();

SELECT @Start_DateTime AS [Before]
    , FORMAT(@Start_DateTime, 'dd.MM.yyyy HH:mm:ss') AS [After]

Вывод на моем компьютере

+-------------------------+---------------------+
|         Before          |        After        |
+-------------------------+---------------------+
| 2020-07-09 08:16:54.023 | 09.07.2020 08:16:54 |
+-------------------------+---------------------+
...