sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Vælg kommende fødselsdage

Bemærk:Jeg har redigeret dette for at rette, hvad jeg mener var en væsentlig fejl. Den aktuelt udsendte version virker for mig.

Dette burde virke, når du har ændret felt- og tabelnavnene, så de svarer til din database.

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

Grundlæggende får den antallet af dage fra deres fødselsdag til nu, og dividerer det med 365 (for at undgå at afrunde problemer, der dukker op, når du konverterer direkte til år).

Så får den antallet af dage fra deres fødselsdag til en uge fra nu, og dividerer det med 365 for at få deres alder om ugen fra nu.

Hvis deres fødselsdag er inden for en uge, vil forskellen mellem disse to værdier være 1. Så det returnerer alle disse poster.



  1. ADO.NET-udbyderen 'Oracle.ManagedDataAccess.Client' er enten ikke registreret i maskinens eller applikationens konfigurationsfil eller kunne ikke indlæses

  2. Forståelse af virkningerne af høj latens i MySQL- og MariaDB-løsninger med høj tilgængelighed

  3. Sådan kører du SHOW LOCALES i MariaDB

  4. T-SQL-fejl, faldgruber og bedste praksis – vinduesfunktioner