web-dev-qa-db-fra.com

Nombre de paramètres incorrect dans l'appel à la fonction native 'DATEDIFF'

Je reçois l'erreur de cette ligne

SELECT table.field
FROM table
WHERE table.month = 'october'
AND DATEDIFF(day, table.start_date, table.end_date) < 30

Les dates dans ma colonne sont au format m-j-aa

Dois-je le convertir dans un format différent? Si c'est le cas, comment?

Utilisation de MariaDB

17
Alex Borsody

Selon la documentation de MariaDB DATEDIFF ne prend que deux arguments:

Syntaxe

DATEDIFF(expr1,expr2)

Description

DATEDIFF() renvoie (expr1 – expr2) exprimé en valeur en jours d'une date à l'autre. expr1 et expr2 sont des expressions de date ou de date et d'heure. Seules les parties de date des valeurs sont utilisées dans le calcul.

18
D Stanley

@alex_b c'est une observation très courante de se confondre entre les syntaxes des fonctions DATEDIFF & TIMESTAMPDIFF. La suite lien aidera certainement avec la syntaxe de DATEDIFF & cette page listera toutes les autres fonctions liées à la date disponibles dans MySQL parent de MariaDB. \

Le référencement des liens ci-dessus est un résumé -

TIMEDIFF(expr1,expr2)
expr1 - '2000:01:01 00:00:00'
expr2 - '2000:01:01 00:00:00.000001'

TIMEDIFF () renvoie expr1 - expr2 exprimé en valeur de temps. expr1 et expr2 sont des expressions d'heure ou de date et d'heure, mais les deux doivent être du même type.

DATEDIFF(expr1,expr2)
expr1 - '2007-12-31 23:59:59'
expr2 - '2007-12-30'

DATEDIFF () renvoie expr1 - expr2 exprimé en valeur en jours d'une date à l'autre. expr1 et expr2 sont des expressions de date ou de date et d'heure. Seules les parties de date des valeurs sont utilisées dans le calcul.

Voici le scénario pour lequel je l'ai utilisé -

  • en utilisant CURDATE pour la date actuelle comme 'argument1'
  • en utilisant la colonne varchar existante comme 'argument2'
  • utilisation de la commande SET pour mettre à jour une colonne

SET output_date = DATEDIFF (CURDATE (), input_date), ... ci-dessus a fonctionné pour moi. Bonne chance!

8
nitinr708