Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Select Nadchodzące urodziny

Uwaga:edytowałem to, aby naprawić to, co uważam za znaczący błąd. Obecnie opublikowana wersja działa dla mnie.

Powinno to zadziałać po zmodyfikowaniu nazw pól i tabel tak, aby odpowiadały Twojej bazie danych.

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))

Zasadniczo pobiera liczbę dni od ich urodzin do chwili obecnej i dzieli ją przez 365 (aby uniknąć problemów z zaokrąglaniem, które pojawiają się podczas konwersji bezpośrednio na lata).

Następnie otrzymuje liczbę dni od ich urodzin do tygodnia od teraz i dzieli to przez 365, aby uzyskać ich wiek za tydzień od teraz.

Jeśli data urodzin przypada w ciągu tygodnia, różnica między tymi dwiema wartościami będzie wynosić 1. Zwraca więc wszystkie te rekordy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Znaczenie dziennika transakcji w SQL Server

  2. Jak utworzyć ograniczenie klucza obcego z opcją ON DELETE SET NULL w programie SQL Server — samouczek SQL Server / TSQL, część 81

  3. Obliczanie liczby pełnych miesięcy między dwiema datami w SQL

  4. Nowe wydanie:pakiet dostrajania Spotlight 7.1.9

  5. Zrozumienie problemu z błędnym odczytem w programie SQL Server