SQL 服务器作业日期输出与 SSIS 调试中的输出不同 运行

SQL Server Job date output different than output in SSIS debug run

所以我们有一个 SQL 作业,它将数据转换为 CSV 文件中的特定日期输出。这总是完美的。最近我们迁移到另一个SQL服务器,现在问题是这样的,用于将日期和时间转换为我们需要的特定格式的查询如下:

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服务器中的什么设置是错误的,它改变了输出?即使更改 SQL 服务器 language/time 设置也没关系。

我有点不知所措。

通过使用FORMAT()函数,它将独立于任何服务器设置。

SQL

DECLARE @Start_DateTime DATETIME = GETDATE();

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

Output on my machine

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