Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Dapatkan hari kerja tertentu dalam seminggu yang diberikan oleh DATETIME

Dengan nilai datetime Anda harus sangat berhati-hati! Terutama indeks hari itu rumit. Anda harus selalu memikirkan perbedaan budaya tertentu:

--The first of January was a Friday in 2016
DECLARE @testDate DATE = {d'2016-01-01'};

--Saya mencoba ini dengan budaya Jerman, ini dimulai dengan Senin

SET LANGUAGE GERMAN;
SELECT @@DATEFIRST,DATEPART(WEEKDAY,@testDate); --in Germany the Friday was 5th day

--Sekarang sama dengan budaya Inggris, mulai hari Minggu

SET LANGUAGE ENGLISH;
SELECT @@DATEFIRST,DATEPART(WEEKDAY,@testDate); --in English culture this is the 6th day

--Anda bisa mendapatkan budaya ini independen dengan menambahkan nilai-nilai tersebut dengan Modulo 7

SET LANGUAGE GERMAN;
SELECT (@@DATEFIRST + DATEPART(WEEKDAY,@testDate)) % 7; --in Germany the Friday was 5th day

SET LANGUAGE ENGLISH;
SELECT (@@DATEFIRST + DATEPART(WEEKDAY,@testDate)) % 7; --in English culture this is the 6th day

Sekarang kedua kueri mengembalikan nilai yang sama untuk hari Jumat, 6 .

Contoh Anda menunjukkan hari Minggu sebagai hari pertama dalam seminggu, jadi hari Minggu dalam seminggu hingga hari tertentu seharusnya tanggal 17 Juli. Hasil yang Anda harapkan (24 Juli) adalah hari pertama minggu berikutnya, bukan?

Coba ini:

DECLARE @DayOfWeek TINYINT = 1;
DECLARE @Date DATETIME = '2016-07-21 23:47:11.133';
SELECT CAST(@Date + @DayOfWeek - (@@DATEFIRST + DATEPART(WEEKDAY,@Date)) % 7 AS DATE)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengaktifkan semua Batasan Pemeriksaan di Database SQL Server - Tutorial SQL Server / TSQL Bagian 88

  2. String yang dipisahkan koma ke dalam Kolom Tabel di SQL Server

  3. Melewati DataTable ke prosedur tersimpan sebagai argumen

  4. Tidak dapat melihat pemicu yang saya buat di SQL Server Management Studio 2008

  5. Cara Menggunakan Wizard Impor/Ekspor Di SQL Server - Tutorial SQL Server / TSQL Bagian 104