Comment obtenir les données des 30 derniers jours à partir de la date d’aujourd’hui sur le serveur SQL

la programmation


je dois enregistrer toutes les lignes des 30 dernières à aujourd’hui. j’ai essayé ça mais ça ne marche pas

Ce que j’ai essayé :

sélectionnez date_time à partir de dsr_data où date_time >= CONVERT(Varchar(100), DATEADD(DAY,-30,GETDATE()),103) et date_time <= CONVERT(varchar(100), getdate(),103)

Solution 3

SELECT date_time  FROM dsr_data
    WHERE date_time
               between DATEADD(DAY,-30,GETDATE()) and  GETDATE(); 

Solution 1

Pourquoi utilisez-vous CONVERT ?
La seule raison possible est la même pour laquelle cela ne fonctionne pas : vous stockez vos dates sous forme de colonnes NVARCHAR au lieu de DATE, DATETIME ou DATETIME2.

Lorsque vous comparez des chaînes, la comparaison est entièrement basée sur le premier caractère différent des deux chaînes : et puisque vous choisissez spécifiquement de formater la date au format 103, qui est “jj/MM/aaaa”, la comparaison sera totalement inutile – l’année sera vérifiée en dernier lieu par exemple, donc le 31/01/2017 sera avant le 31/12/1952 car la comparaison se fera sur le premier chiffre du mois, et ‘0’ est inférieur à ‘1’

Changez votre base de données. Stockez toujours les données dans les types de données appropriés : cela signifie des valeurs entières dans les colonnes INT, des informations de date dans les colonnes DATE, DATETIME ou DATETIME2, etc. Si vous ne le faites pas, ce n’est que le premier d’une longue liste de problèmes très désagréables qui vous attendent sur toute la ligne…

Solution 2

Utilisez la requête ci-dessous.

SELECT date_time  FROM  dsr_data
WHERE date_time  >= DATEADD(day,-30, getdate()) 
and   date_time  <= getdate()

コメント

タイトルとURLをコピーしました