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

SQL Chọn sinh nhật sắp tới

Lưu ý:Tôi đã chỉnh sửa phần này để sửa lỗi mà tôi tin rằng đó là một lỗi nghiêm trọng. Phiên bản hiện đã đăng phù hợp với tôi.

Điều này sẽ hoạt động sau khi bạn sửa đổi trường và tên bảng để tương ứng với cơ sở dữ liệu của bạn.

SELECT 
  BRTHDATE AS BIRTHDAY
 ,FLOOR(DATEDIFF(dd,EMP.BRTHDATE,GETDATE()) / 365.25) AS AGE_NOW
 ,FLOOR(DATEDIFF(dd,EMP.BRTHDATE,GETDATE()+7) / 365.25) AS AGE_ONE_WEEK_FROM_NOW
FROM 
  "Database name".dbo.EMPLOYEES EMP
WHERE 1 = (FLOOR(DATEDIFF(dd,EMP.BRTHDATE,GETDATE()+7) / 365.25))
          -
          (FLOOR(DATEDIFF(dd,EMP.BRTHDATE,GETDATE()) / 365.25))

Về cơ bản, nó lấy # ngày từ sinh nhật của họ đến bây giờ và chia số đó cho 365 (để tránh các vấn đề làm tròn số phát sinh khi bạn chuyển đổi trực tiếp thành năm).

Sau đó, nó lấy # ngày từ sinh nhật của họ đến một tuần kể từ bây giờ và chia số đó cho 365 để có tuổi của họ một tuần kể từ bây giờ.

Nếu ngày sinh của họ diễn ra trong vòng một tuần, thì sự khác biệt giữa hai giá trị đó sẽ là 1. Vì vậy, nó trả về tất cả các bản ghi đó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nói về tắc nghẽn hiệu suất máy chủ SQL

  2. Cách ngăn cập nhật bảng, trừ một trường hợp ngoại lệ

  3. Cách thực hiện liên kết bên trong trên số hàng trong máy chủ sql

  4. Làm cách nào để lấy Thời gian từ định dạng DateTime trong SQL?

  5. Làm cách nào để lấy ngày ở định dạng YYYY-MM-DD từ trường ngày giờ TSQL?