0
votes

Comment réparer un problème de restriction DateTime dans une requête SQL?

Je développe une requête SQL, comme une restriction, je souhaite que la requête renvoie les données du premier jour du dernier mois jusqu'à présent.

Par exemple: Si la requête est exécutée aujourd'hui, la requête ne sera que Données de retour entrées du 01/03/2019 jusqu'à aujourd'hui.

Pour ce faire, j'ai créé la restriction suivante: xxx

Le problème est dans les mois 01, 11 et 12:

Si le mois est "11", l'algorithme retournera "1901001" et non "191001".

si le mois est "01", l'algorithme retournera "190001" et non "181201".

Merci pour toute aide.

sql

2 commentaires

Pourquoi utilisez-vous getDate () ? Il n'est pas pris en charge dans MySQL.


Quel DBMS Produit utilisez-vous? "SQL" est juste une langue de requête, pas le nom d'un produit de base de données spécifique. Veuillez ajouter la balise pour le produit de base de données que vous utilisez.


3 Réponses :


0
votes
SF1010.F1_DTDIGT BETWEEN $yourDate AND date_add($yourDate,interval -DAY($yourDate)+1 DAY)
This gets dates between your date and the first day of the month. first day logic works by subtracting the DAY part to get first of month.

0 commentaires

0
votes

Cette requête fera la comparaison de votre dtdigit avec le premier jour du mois précédent dans la date Format:

sf1010.f1_dtDigit> = str_to_date (Concat (Année (date_sub (maintenant (), intervalle 1 mois)), '-', mois (date_sub (maintenant (), intervalle 1 mois)), '-' , '1'), '% y-% m-% d')

explication

  • date_sub (maintenant (), intervalle 1 mois) retourne la date exactement un mois. Nous utilisons cette date pour obtenir le mois précédent
  • année () et mois () Les fonctions utilisent la date expliquée ci-dessus
  • str_to_date () la fonction convertit une chaîne représentant une date à la Mysql date au format, à l'aide du masque (dans cet exemple, il est '% y-% m-% d' ).

0 commentaires

0
votes

On dirige-t-il? XXX PRE>

Ceci suppose que la date n'est pas à l'avenir. Vous pouvez ajouter une autre condition si cela est possible. P>

Si vous utilisez SQL Server, vous pouvez faire cette forme étrange de date Arithmétique: P>

SF1010.F1_DTDIGT  >= dateadd(month, datediff(month, 0, getdate()) - 1, 0)


0 commentaires