SQL -Abfrage, um zu überprüfen, ob heute der Geburtstag des Mitarbeiters ist [geschlossen

StackOverflow https://stackoverflow.com/questions/8803906

  •  26-10-2019
  •  | 
  •  

Frage

Kann mir jemand sagen, wie ich die Liste eines Mitarbeiters bekommt, der heute seine Geburtstage hat?

Danke, Vishal

War es hilfreich?

Lösung

SELECT *
FROM Employees
WHERE DATEPART(d, DateOfBirth) = DATEPART(d, GETDATE())
    AND DATEPART(m, DateOfBirth) = DATEPART(m, GETDATE())

Andere Tipps

Im Idealfall würden ein bisschen mehr Informationen zur Struktur Ihrer Datenquellen helfen, aber eine einfache Antwort, die Ihren Mitarbeiteraufzeichnungen ein DOB -Feld enthält, wäre, den Tag und Monat mit dem aktuellen Systemdatum in der Klausel Ihrer Abfrage zu vergleichen.

Etwas in den folgenden Zeilen:

select * from wherever
where
....
(
  datepart(d, EmployeeDOB) = datepart(d, getdate()) and
  datepart(m, EmployeeDOB) = datepart(m, getdate())
)
.....

WHERE Monat und Tag des Geburtstagsspiels des Mitarbeiters heute Monat und Tag (offensichtlich). Spezifische Anweisungen würden mehr Eingaben erfordern.

Sie können so etwas tun:

select e.name from employeeTable e
where right(e.birthday) = right(convert(varchar(8), getdate(), 112), 4)

oder

select e.name from employeeTable e
where datepart(d, e.birthday) = datepart(d, getdate())
    and datepart(m, e.birthday) = datepart(m, getdate())

Obwohl dies viel langwieriger ist, muss die gesamte Tabelle nach Übereinstimmungen scannen.

WITH
  a_century AS
(
  SELECT 1 AS year
  UNION ALL
  SELECT year * 2 + 0 AS year FROM a_century WHERE year < 64
  UNION ALL
  SELECT year * 2 + 1 AS year FROM a_century WHERE year < 64
)
SELECT
  *
FROM
  yourTable
INNER JOIN
  a_century
    ON yourTable.birthday = DATEADD(year, -a_century.year, DATEADD(day, DATEDIFF(day, 0, getDate()), 0))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top