sql get une heure spécifique en date

Je veux écrire une requête SQL pour returnner les résultats de 21 heures hier jusqu'à l'heure actuelle. Pour autant que je sache, GETDATE() ne me donnera que les résultats d'aujourd'hui, et GETDATE()-1 me donnera tout d'hier, ce que je ne veux pas.

Comment cela peut-il être accompli?

 select * from tbl where datecol between dateadd(hour,21,DATEDIFF(d,0,getdate()-1)) and getdate() 

Essayez avec ceci:

 DATE_SUB(CURDATE(), INTERVAL 24-9 HOUR); 

Cela soustrait 24-9 heures à la date actuelle, ce qui équivaut à soustraire 1 jour et append 9 heures.

Essayez ceci, cela fonctionne parfaitement dans la database Sybase

select * de la table où datecol> dateadd (jour, -1, date_dead (heure, 18, (convert (datetime, convert (date, getdate ())))))

Explication: (De l'intérieur vers l'extérieur)

  1. convert (date, getdate ()) – Ceci obtiendra la date du jour avec seulement la partie de date ie, 19/07/2015

  2. convert (datetime, convert (date, getdate ())) – Ceci obtiendra la date du jour avec l'heure comme 00:00 hours ie, 7/19/2015 12:00:00 AM

  3. dateadd (heure, 21, (convert (datetime, convert (date, getdate ()))) – Cela appenda les heures au résultat précédemment obtenu, ie, 19/07/2015 21:00:00

  4. dateadd (jour, -1, dateadd (heure, 18, (convert (datetime, convert (date, getdate ()))))) – Enfin ce sera less un jour pour la date obtenue ie, 18/07/2015 9 : 00: 00 PM

Voici…