0

私はこれをやろうとしています

SELECT     CAST(date AS datetime) + CAST(time AS datetime) AS NewDT, variable, value
FROM         batch
WHERE     (NewDT <= @BatchStartDate)

しかし、「Invalid colum name NewDT」というエラーが表示されます。問題は、日付と時刻がデータベース内の 2 つの列にあることです。

4

2 に答える 2

2

MS SQL Serverを使用していると思います。WHERE句でエイリアスを参照することはできません。フルを使用する必要があるため、次のCAST(date AS datetime) + CAST(time AS datetime)ようになります。

SELECT CAST(date AS datetime) + CAST(time AS datetime) AS NewDT, variable, value
  FROM batch
 WHERE (CAST(date AS datetime) + CAST(time AS datetime) <= @BatchStartDate)
于 2012-10-17T06:59:50.427 に答える
0

(また、SQL Serverを使用していると推測しています)

where句ではエイリアスを使用できないため、式全体を使用するか(Yaroslavの回答のように)、次のように元の選択をサブクエリとしてラップできます。

select * from 
(
   SELECT CAST(date AS datetime) + CAST(time AS datetime) AS NewDT, variable, value
   FROM batch
)
WHERE NewDT <= @BatchStartDate
于 2012-10-17T07:04:03.147 に答える