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.

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>
Pourtant, je passe les paramètres dans le même ordre.
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 ?