Voici la question. J'obtiens le résultat en nombre de jours entre la date de naissance et maintenant. mais j'ai besoin de savoir s'il s'agit de 5 jours à partir de la date actuelle.
select *, datediff(DAY , DateOfBirth,GETDATE()) as diff
From Table_A
order by DateOfBirth asc
3 Réponses :
D'après ce que j'ai compris, vous devez recevoir les anniversaires à venir dans les 5 prochains jours. Dans MySQL vous pouvez faire avec la requête ci-dessous,
SELECT *, DATE_FORMAT(DateOfBirth,'%m-%d') AS md FROM Table_A WHERE DATE_FORMAT(DateOfBirth,'%m-%d') BETWEEN DATE_FORMAT(CURDATE(), '%m-%d') AND DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL 5 DAY), '%m-%d') ORDER BY md
Il renverra tous les anniversaires entre le 07 et le 12 août. Obtenez les jours actuels et +5 du côté du script .
Si vous voulez une solution basée sur une requête pure sans aucun calcul pour les dates du côté du script, reportez-vous à la requête suivante,
SELECT *, DATE_FORMAT(DateOfBirth,'%m-%d') AS md FROM Table_A WHERE DATE_FORMAT(DateOfBirth,'%m-%d') BETWEEN '08-07' AND '08-12' ORDER BY md
en lisant les commentaires sous la question, il semble que cela soit nécessaire pour SQL Server, pas pour mysql
C'est bon. Quelqu'un dans le futur pourrait répondre à cette question pour la variante MySQL.
SELECT * FROM Table_A WHERE DateOfBirth BETWEEN GETDATE() AND DATEADD(day,5, Convert(Date,GETDATE())) it will give you all the birthdays in the next 5 days.
Si vous recherchez les anniversaires, vous pouvez faire quelque chose comme:
DECLARE @dates AS TABLE ( DateOfBirth DATE );
DECLARE @number_of_days INT = 5;
INSERT INTO @dates
( DateOfBirth )
VALUES ( '20090101' ),
( '20090809' ),
( '20090816' ),
( '20180807' );
SELECT * ,
DATEDIFF(DAY, SYSDATETIME(), bd.this_year_birthday)
FROM @dates d
CROSS APPLY ( SELECT DATEFROMPARTS(YEAR(SYSDATETIME()),
MONTH(d.DateOfBirth),
DAY(d.DateOfBirth)) AS this_year_birthday
) bd
WHERE DATEDIFF(DAY, SYSDATETIME(), bd.this_year_birthday) BETWEEN 0
AND
@number_of_days;
Salut, vous avez une question?
Mysql n'a pas getdate Cette question est-elle correctement étiquetée?
Était-ce censé être une réponse à la question de quelqu'un d'autre?
Ceci est la question. J'obtiens le résultat en nombre de jours depuis la date de naissance jusqu'à maintenant. mais j'ai besoin de savoir si c'est à venir 5 jours à compter de la date maintenant
MYSQL ou SQLSERVER?
Vous pouvez utiliser quelque chose comme ceci comme base
SELECT DATEDIFF (DATE_FORMAT (DateOfBirth, CONCAT (YEAR (NOW ()), '-% m-% d% T')), NOW ()) AS diff code > mais cela ne fonctionne pas pour les cas où l'anniversaire est du 1er au 5 janvier, par exemplemysql version 2014 p.salmon
mysql prend en charge getdate ()?
Version 2014 Donc son SQLServer alors
C'est son
sqlmaismicrosoft sql serverje supposeoui serveur sql c'est
Pouvez-vous s'il vous plaît reformater la question, ajouter des exemples de données d'entrée et de sortie attendues
Je pense qu'il essaie d'obtenir # de jours avant son anniversaire à partir d'aujourd'hui. prendra donc en considération le jour de l'année.
Copie possible de SQL Select Upcoming Birthdays
@vishal. . . Comment savoir si la date de naissance d'une personne sera dans cinq jours? La question n'a pas de sens. Je suppose que vous voulez des anniversaires.