Bonjour,
Une erreur de conception dans le langage SQL ?
Je programme une fonction d'élimination des anciens records d'une table, sur base de leur date.
Quelle ne fut pas ma surprise de constater que DateDiff rendait un signe différent de sa voisine TimeStampDiff
Nous sommes le 21 décembre 2018.
Pourtant, je passe les paramètres dans le même ordre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 mysql> SELECT version();SELECT TIMESTAMPDIFF(DAY, '2018-12-01', CURRENT_DATE) AS delai;SELECT DATEDIFF('2018-12-01', CURRENT_DATE) AS delai; +-------------------------+ | version() | +-------------------------+ | 5.7.24-0ubuntu0.16.04.1 | +-------------------------+ 1 row in set (0,00 sec) +-------+ | delai | +-------+ | 20 | +-------+ 1 row in set (0,00 sec) +-------+ | delai | +-------+ | -20 | +-------+ 1 row in set (0,00 sec) mysql>
Ca m'a paru bizarre, que deux fonctions analogues fonctionnent à l'inverse.
Et même dangereux si le signe est utilisé comme critère pour un DELETE
Quelqu'un aurait-il une explication ?
Partager