2017-11-20 6 views
0

'dd.MM.yyyy'のような日付がありますが、他のテーブルの日付はiso datetimeですので、where節で比較しようとすると ' 'T00:'の近くに構文を変更してください。私はのは、あなたのデータを想定してみましょう'T00:'の近くの構文が正しくありません

convert(date, date_field_with_isotime, 104) 

select top 1 * 
from ExchangeRates 
where ExchangeDate = dateadd(day, date_field_with_isotime, -1) 
+2

なぜあなたが実際に格納する必要があるのは、* datetimes *ですか?ほとんどのデータベースはdatetimeを格納するのに適した型を持っています。それは* string *の書式設定の問題に遭遇しないことを意味します。 –

+1

どのデータベースを使用していますか? – GurV

+0

ExchangeRatesのテーブルからいくつかのデータを共有できますか? – missionMan

答えて

0

しようとしたときに、同じエラーを得たクエリは、このようにする必要があり、これらの

date_field_with_isotime  ExchangeDate 
(varhcar, ISO 8601 formatted) (date) 
2017-11-20      19/11/2017 00:00:00 
2017-11-19      19/11/2017 00:00:00 
2017-11-18      19/11/2017 00:00:00 

です:

select top 1 * 
from dbo.ExchangeRates 
where ExchangeDate = dateadd(day, -1, convert(date, date_field_with_isotime, 120)) 

しかし、まだ「TOO:」声明奇妙です、テーブルがトリガを持っているかどうかを確認してください。

関連する問題