Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Nhận ngày từ một số tuần trong T-SQL

Câu trả lời của Quassnoi có hiệu quả, nhưng loại khiến bạn phải bận tâm trong việc dọn dẹp ngày tháng nếu chúng là ngày vào giữa ngày (đầu tuần của anh ấy khiến bạn sớm hơn bạn một ngày nếu bạn sử dụng thời gian ở giữa trong ngày - bạn có thể kiểm tra bằng GETDATE ()).

Tôi đã sử dụng một cái gì đó như thế này trong quá khứ:

SELECT 
   CONVERT(varchar(50), (DATEADD(dd, @@DATEFIRST - DATEPART(dw, DATECOL), DATECOL)), 101),
   CONVERT(varchar(50), (DATEADD(dd, @@DATEFIRST - DATEPART(dw, DATECOL) - 6, DATECOL)), 101)

Một lợi ích phụ của việc này là bằng cách sử dụng @@ DATEFIRST, bạn có thể xử lý các ngày bắt đầu tuần không chuẩn (mặc định là Chủ nhật, nhưng với SET @@ DATEFIRST, bạn có thể thay đổi điều này).

Có vẻ như thật điên rồ khi thao tác ngày tháng đơn giản trong SQL Server phải phức tạp đến mức này, nhưng bạn hiểu rồi đấy ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tránh giám sát hoạt động làm ảnh hưởng đến hiệu suất máy chủ SQL của bạn

  2. chỉ nhóm sql theo các hàng theo trình tự

  3. Yêu cầu không thành công hoặc dịch vụ không phản hồi kịp thời?

  4. Kết nối HP-UX Itanium với SQL Server

  5. SMALLDATETIMEFROMPARTS () Ví dụ trong SQL Server (T-SQL)