2017-10-14 2 views
0

Je veux obtenir le total sum à partir d'un tableau du jour previous. Je reçois une erreursql convertir la date pour afficher

Mon code:

select 
    date_paid, sum(paid_amount) as amount 
from 
    till1 
where 
    date_paid = dateadd(day, datediff(day, 0, getdate()), 0) 
group by 
    date_paid 

Je veux obtenir quelque chose de résultat comme celui-ci:

enter image description here

Je reçois l'erreur suivante:

The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value

+4

Apparemment, 'date_paid' est stocké sous forme de chaîne. C'est un mauvais moyen de stocker des dates (comme vous pouvez le voir car cette requête échoue). Corrigez vos données. –

Répondre

1

Vraisemblablement, c'est SQL Server. Vous pouvez corriger l'erreur de syntaxe en utilisant try_convert():

select date_paid, sum(paid_amount) as amount 
from till1 
where try_convert(date, date_paid) = cast(getdate() as date) 
group by date_paid; 

Cependant, la vraie solution est de fixer les données. Les dates ne doivent pas être stockées en tant que chaînes.

+0

le champ qui a "date_paid" contient des valeurs NULL, mais si j'utilise un champ qui n'a pas de valeurs NULL, il me donne les bons résultats, comment puis-je faire ignorer les champs NULL et faire me donner les résultats? –

+0

@fhulufhelohanyahanya. . . Les valeurs 'NULL' échoueraient la comparaison, mais ne provoqueraient pas d'erreur de requête. Le problème est que la colonne est une chaîne et non une date/heure. –

+0

merci, son fonctionnement, mais mon format de données date_payé est passé de "2017/410/13" à "2017-10-13 00: 00: 00.000" –