「日付や時刻を文字列から変換する際に変換に失敗しました」というエラーメッセージについて、20件ほど検索しました。そして、誰も私の問題に対処していないようです。
ちょっとした歴史ですが、先週の金曜日、クエリは問題なく機能し、返されたデータは適切でした。次の月曜日に、クエリが機能しなくなり、「文字列から日付および/または時刻を変換するときに変換に失敗しました」というエラー メッセージが表示されました。そのため、数時間の戦いの後、問題のあるコードを含む関数を実行することができ、クエリは再び完全に実行されました. 今朝まで。オフィスに来てクエリを実行すると、「文字列から日付や時刻を変換するときに変換に失敗しました」というエラーが表示されました。だから今、私は髪を引っ張っています。
まず、返される各レコードが実際に有効な日付であることを isDate 関数を使用して検証することから始めました。すべての日付は、文字列形式の有効な日付です。記録が 1 年以上経過しているかどうかを確認しているだけです。
私はいくつかの INNER JOINS を持っていますが、それらが出力に影響を与えているかどうか疑問に思っていました。
SELECT
gc2p.partnumber, gc2p.orderby, gc2p.campaigncode, gp2a.assetfilename
FROM [StepMirror].[dbo].[stepview_nwppck_ngn_getclassification2productrefs] gc2p
,[StepMirror].[dbo].[stepview_nwppck_ngn_getpimweblegalattrlist1] gpwa
,[StepMirror].[dbo].[stepview_nwppck_ngn_getclassification2assetrefs] gc2a
,[StepMirror].[dbo].[stepview_nwppck_ngn_getproduct2assetrefs] gp2a
WHERE gc2p.partnumber=gpwa.PARTNUMBER and
gc2p.id=gc2a.id and
gp2a.PRODUCTNAME=gpwa.PARTNUMBER and
ATTRIBUTENAME='New Date' AND
ATTRIBUTEVALUE > dateadd(month,-12,getdate()) AND
gc2p.id = '5665976' and
gc2a.assettype='Primary Image' AND
gp2a.ASSETTYPE = 'Primary Image'
order by gc2p.orderby
誰かが私に助けの手を差し伸べてくれたら、それは素晴らしいことです。
編集:「ATTRIBUTEVALUE > dateadd(month,-12,getdate())」を削除すると、クエリは正常に実行されます。エラーをスローするクエリの正確な部分について言及するのを忘れていました。
編集:更新されたクエリ -同様の回答を求めている人のための現在の作業クエリ。
SELECT TOP 18 gc2p.partnumber, gpwa.ATTRIBUTECNAME,gp2a.ASSETFILENAME, gpwa.ATTRIBUTEVALUE
FROM [StepMirror].[dbo].[stepview_nwppck_ngn_getclassification2productrefs] gc2p
INNER JOIN [StepMirror].[dbo].[stepview_nwppck_ngn_getpimweblegalattrlist1] gpwa ON gc2p.partnumber=gpwa.PARTNUMBER and gpwa.ORDERBY='96'
INNER JOIN [StepMirror].[dbo].[stepview_nwppck_ngn_getclassification2assetrefs] gc2a ON gc2p.id=gc2a.id
INNER JOIN [StepMirror].[dbo].[stepview_nwppck_ngn_getproduct2assetrefs] gp2a ON gc2p.partnumber=gp2a.PRODUCTNAME
WHERE gc2p.id = 5665976 AND gp2a.assettype='Primary Image' AND gc2a.assettype='Primary Image'
AND(CASE WHEN ISDATE(ATTRIBUTEVALUE) = 0 then NULL ELSE ATTRIBUTEVALUE END) > dateadd(month,-12,getdate())
order by gc2p.orderby