18 juin 2023

SQL : Une date arrondie au Quart d'heure

 Voila ce que j'ai trouvé de plus simple pour arrondir une date au quart d'heure.

Dites-moi si vous avez mieux !


SELECT DATEADD(MINUTE, (DATEDIFF(MINUTE, CONVERT(DATE, DateEvent), DateEvent) / 15) * 15, CONVERT(DATETIME, CONVERT(DATE, DateEvent)))

  1. On prend la date sans les heures : CONVERT(DATETIME, CONVERT(DATE, DateEvent))
  2. On calcule la différence en minutes entre la date sans les heures CONVERT(DATE, DateEventet la date avec les heures DateEvent : (DATEDIFF(MINUTE, CONVERT(DATE, DateEvent), DateEvent)
  3. En divisant le résultat qui est un entier par quinze : on bénéficie de la division entière et donc on a un nombre entier tout rond, qu'il suffit de remultiplier par quinze pour avoir un nombre de minutes arrondie au quart d'heure : (DATEDIFF(MINUTE, CONVERT(DATE, DateEvent), DateEvent) / 15) * 15
  4. On ajoute ce nombre à la date sans les heures, celle du point n°1 :  DATEADD(MINUTE, (différence en minutes entre (date, date et heure) / 15) * 15, date): et on a l'heure arrondie au quart d'heure.


Enjoy !




28 mars 2023

SQL : Pagination

 Ca arrive, on a besoin de paginer le résultat d'une requête.

Je viens d'apprendre en relisant la documentation de l'instruction ORDER BY, qu'on pouvait faire cela tout simplement grâce à cette instruction ! (SQL Server 2012 et plus uniquement).

SELECT *
FROM dbo.demo
ORDER BY dem_date OFFSET 3 ROWS FETCH NEXT 3 ROWS ONLY

Bon c'est verbeux !

OFFSET x ROWS : saute les x premières lignes 

FETCH NEXT y ROWS ONLY : renvoie uniquement que y lignes


Ca a du bon de lire la doc parfois.

Enjoy !


https://learn.microsoft.com/en-us/sql/t-sql/queries/select-order-by-clause-transact-sql?view=sql-server-ver16