Jadi kami memiliki pekerjaan SQL yang mengubah data menjadi keluaran tanggal tertentu dalam file CSV. Ini selalu bekerja dengan sempurna. Baru-baru ini kami bermigrasi ke SQL Server lain, dan sekarang masalahnya adalah ini, kueri yang digunakan untuk mengubah tanggal dan waktu ke dalam format khusus yang kami butuhkan adalah sebagai berikut:

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]

Jika Anda menjalankan ini dan melihat CSV formatnya adalah satu baris adalah:

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

Namun, jalankan paket yang sama melalui pekerjaan agen SQL Server, dan hasilnya adalah ini:

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

Dan saya tidak tahu mengapa itu beralih hari bulan? Lokalnya adalah 1043 (Belanda), kueri bahkan menentukan pengaturan DMY sebagai format tanggal, dan semua itu tidak masalah karena konversinya adalah string.

Jadi pengaturan apa di SQL Server yang salah sehingga mengubah output? Bahkan mengubah pengaturan bahasa/waktu SQL Server tidak masalah.

Saya agak bingung mencari penyebabnya.

0
Nebur 9 Juli 2020, 11:16

1 menjawab

Jawaban Terbaik

Dengan menggunakan fungsi FORMAT() itu akan menjadi independen dari pengaturan server apa pun.

SQL

DECLARE @Start_DateTime DATETIME = GETDATE();

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

Keluaran di mesin saya

+-------------------------+---------------------+
|         Before          |        After        |
+-------------------------+---------------------+
| 2020-07-09 08:16:54.023 | 09.07.2020 08:16:54 |
+-------------------------+---------------------+
0
Yitzhak Khabinsky 9 Juli 2020, 12:19