Reputation: 11
I am using a SQL query
select
datediff(hour,Convert(DateTime,Convert(DateTime, Convert(nVarChar, cast(complaintdate as datetime), 101)) + '' +
Convert(varchar,complainttime,114)),dateadd(mi,330,GETUTCDATE()))
from complaintregister
It creates a column like
No column name
15455
15259
15190
15190
15165
300
200
1000
500
and I want a column containg values > 1000
Upvotes: 1
Views: 168
Reputation: 3436
If it is SQL server, you could dot something like this
select tablename.colname from
(select datediff(hour,Convert(DateTime,Convert(DateTime, Convert(nVarChar, cast(complaintdate as datetime), 101)) +''+ Convert(varchar,complainttime,114)),dateadd(mi,330,GETUTCDATE())) as colname
from complaintregister) as tablename
where tablename.colname > 1000
Don't have a test db atm, so you have to play around with it a bit
Upvotes: 0
Reputation: 700322
Just repeat the expression in the condition:
select datediff(hour,Convert(DateTime,Convert(DateTime, Convert(nVarChar, cast(complaintdate as datetime), 101)) +''+ Convert(varchar,complainttime,114)),dateadd(mi,330,GETUTCDATE()))
from complaintregister
where datediff(hour,Convert(DateTime,Convert(DateTime, Convert(nVarChar, cast(complaintdate as datetime), 101)) +''+ Convert(varchar,complainttime,114)),dateadd(mi,330,GETUTCDATE())) > 1000
The query planner should recognise that the expressions are identical and actually only calcuate it once for each record.
Alternatively you can use a nested query:
select time
from (
select datediff(hour,Convert(DateTime,Convert(DateTime, Convert(nVarChar, cast(complaintdate as datetime), 101)) +''+ Convert(varchar,complainttime,114)),dateadd(mi,330,GETUTCDATE())) as time
from complaintregister
) x
where time > 1000
Upvotes: 5