sql >> Databáze >  >> RDS >> Sqlserver

SQL Vyberte Nadcházející narozeniny

Poznámka:Upravil jsem to, abych opravil to, co považuji za významnou chybu. Aktuálně zveřejněná verze mi funguje.

To by mělo fungovat poté, co upravíte názvy polí a tabulek tak, aby odpovídaly vaší databázi.

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 podstatě získá počet dní od jejich narozenin do současnosti a vydělí to 365 (aby se předešlo problémům se zaokrouhlováním, které nastanou při přímém převodu na roky).

Potom získá počet dní od jejich narozenin do týdne od nynějška a vydělí to 365, čímž získá jejich věk za týden.

Pokud jsou jejich narozeniny do týdne, pak rozdíl mezi těmito dvěma hodnotami bude 1. Takže vrátí všechny tyto záznamy.



  1. Může spravovaný ovladač Oracle správně používat async/await?

  2. Jak mohu zkontrolovat typ motoru MySQL pro konkrétní tabulku?

  3. Přidejte souhrnný řádek se součty

  4. oracle diff:jak porovnat dvě tabulky?