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

Cara mendapatkan Tanggal Sabtu (Atau Tanggal hari kerja lainnya) - SQL Server

Ini adalah fungsi yang akan kembali pada hari Sabtu berikutnya jika Anda memanggilnya seperti ini:

SELECT dbo.fn_Get_NextWeekDay('2011-08-08', 6)

"6" berasal dari daftar kemungkinan nilai Anda dapat mengatur untuk DATEFIRST .

Anda bisa mendapatkan hari lain dalam seminggu dengan mengubah parameter kedua yang sesuai.

Ini adalah fungsinya:

IF OBJECT_ID('dbo.fn_Get_NextWeekDay') IS NOT NULL 
  DROP FUNCTION dbo.fn_Get_NextWeekDay
GO
CREATE FUNCTION dbo.fn_Get_NextWeekDay(
     @aDate   DATETIME
   , @dayofweek      INT
    /*
      @dw - day of the week
      1 - Monday
      2 - Tuesday
      3 - Wednesday
      4 - Thursday
      5 - Friday
      6 - Saturday
      7 - Sunday
    */   
  )
RETURNS DATETIME 
AS
/*
  SELECT dbo.fn_Get_NextWeekDay('2011-08-08', 6)
  SELECT dbo.fn_Get_NextWeekDay('2011-08-08', 1)
*/
BEGIN
  RETURN 
      DATEADD(day
        , ( @dayofweek + 8 - DATEPART(dw, @aDate) - @@DATEFIRST ) % 7
        , @aDate 
      )  
END
GO

[EDIT] Ini mungkin solusi lain. Ini harus bekerja dalam bahasa apa pun:

IF OBJECT_ID('dbo.fn_NextWeekDay') IS NOT NULL 
  DROP FUNCTION dbo.fn_NextWeekDay
GO
CREATE FUNCTION dbo.fn_NextWeekDay(
     @aDate     DATE
   , @dayofweek NVARCHAR(30)
  )
RETURNS DATE
AS
/*
  SELECT dbo.fn_NextWeekDay('2016-12-14', 'fri')
  SELECT dbo.fn_NextWeekDay('2016-03-15', 'mon')
*/
BEGIN
  DECLARE @dx INT = 6
  WHILE UPPER(DATENAME(weekday,@aDate)) NOT LIKE UPPER(@dayofweek) + '%'
  BEGIN

    SET @aDate = DATEADD(day,1,@aDate)

    SET @[email protected]
    if @dx < 0 
    BEGIN
      SET @aDate = NULL 
      BREAK
    END
  END

  RETURN @aDate

END
GO


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ClassNotFoundException - com.microsoft.jdbc.sqlserver.SQLServerDriver

  2. Nilai NULL dikecualikan. Mengapa?

  3. Bagaimana Fungsi NCHAR() Bekerja di SQL Server (T-SQL)

  4. Memahami Alias ​​Kolom di Select Query di SQL Server - Tutorial SQL Server / TSQL Bagian 115

  5. Dapatkan ConnectionString dari app.config di c#