Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Изберете предстоящи рождени дни

Забележка:Редактирах това, за да коригирам това, което смятам, че е значителна грешка. Публикуваната в момента версия работи за мен.

Това трябва да работи, след като промените имената на полетата и таблиците, за да съответстват на вашата база данни.

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

По принцип той получава броя дни от рождения им ден до момента и го разделя на 365 (за да се избегнат проблеми със закръгляването, които възникват, когато преобразувате директно в години).

След това получава броя дни от рождения им ден до една седмица от сега и го разделя на 365, за да получи възрастта им след седмица.

Ако рожденият им ден е в рамките на една седмица, тогава разликата между тези две стойности ще бъде 1. Така че връща всички тези записи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2016:Вмъкване на данни

  2. Има ли разлика между SQL Server Express (2012) и LocalDB?

  3. 2 начина да видите дали остарелите функции все още се използват в екземпляр на SQL сървър

  4. Как да конвертирате разделен със запетая списък в редове в SQL Server

  5. Преобразуване на SQL Server DateTime обект в BIGINT (.Net тикчета)