0

私は奇妙な問題に直面しており、何が問題なのか理解できません。私のデータベースには、次のdatetimeような値を保持するフィールドがあります。それを別の日付03.10.2012 11:25:06 に変換してdate比較する必要があります。私が成功せずに試したことは次のとおりです。

p1.value as City,
p2.value as Country,
p3.value as RequestNumber,
convert (datetime, convert (varchar, test.timestampmin, 101), 101) as timestampmin

from Process p
LEFT JOIN Parameter p1 on p1.ID=p.id AND p1.NAME = 'City'
LEFT JOIN Parameter p2 on p2.ID=p.id AND p2.NAME = 'Country'
LEFT JOIN PA_Parameter p3 on p3.ID=p.id AND p3.NAME = 'RequestNumber'

INNER JOIN
(
    SELECT min(Timestamp) as timestampmin, id as id
    FROM tasks
    GROUP BY id
) as test 
    ON test.id = p3.ID

where p.type='Event' and 
timestampmin = convert (datetime, convert (varchar, '06.18.2012', 101), 101)

datetime問題は、変換されたconvert (datetime, convert (varchar, '06.18.2012', 101), 101)ものと where 句で使用している を比較できないことです。

私は何が欠けていますか?

4

1 に答える 1

1

簡単に言えば、同じクエリの WHERE 句内の SELECT 句で列のエイリアスにアクセスすることはできません。

p1.value as City,
p2.value as Country,
p3.value as RequestNumber,
convert (datetime, convert (varchar, test.timestampmin, 101), 101) as timestampmin

from Process p
LEFT JOIN Parameter p1 on p1.ID=p.id AND p1.NAME = 'City'
LEFT JOIN Parameter p2 on p2.ID=p.id AND p2.NAME = 'Country'
LEFT JOIN PA_Parameter p3 on p3.ID=p.id AND p3.NAME = 'RequestNumber'

INNER JOIN
(
    SELECT min(Timestamp) as timestampmin, id as id
    FROM tasks
    GROUP BY id
) as test 
    ON test.id = p3.ID

where p.type='Event' and 
convert (datetime, convert (varchar, test.timestampmin, 101), 101)
   = convert (datetime, convert (varchar, '06.18.2012', 101), 101)

が日時列の場合test.timestampminは、代わりに WHERE 句でこれを使用できます

where p.type='Event'
  and test.timestampmin >= '20120618'
  and test.timestampmin <  '20120619'
于 2012-11-28T07:30:58.397 に答える