Итак, у нас есть задание 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 настроек языка / времени сервера не имело значения.
Я немного затрудняюсь найти причину этого.