Home > Archive > Microsoft SQL Server forum > January 2006 > timezones in select statement









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author timezones in select statement
jerball

2006-01-31, 1:23 pm

The situation is that I have a query where a [thing] is supposed to
end, in the sense that I don't want it to be pulled back in the query,
at a certain time (end_date), but that is determined by the timezone
that [thing] is located in (end_timezone).

Basically, I want to say:
1) If the current record has a timezone not equal to the current time
zone, which is mountain, then change the end_date being pulled back to
reflect the time zone
2) Then, only pull back records that are scheduled to end before that
time.

I know this statement isn't valid, but I'll post it here to try to
convey what I'm attempting:

select end_date, end_timezone,
CASE end_timezone
WHEN 'ET' THEN DATEADD(hh, 2, end_date)
WHEN 'CT' THEN DATEADD(hh, 1, end_date)
WHEN 'PT' THEN DATEADD(hh, -1, end_date)
ELSE end_date
END AS theEndDate
from offers
where end_timezone = 'PT'
and theEndDate >= {ts '2006-01-31 14:01:27'}

Of course, this statement fails. Any suggestions on how to do what I'm
trying to do?

Thanks!

MGFoster

2006-01-31, 8:23 pm

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

You can't use an expression (the CASE expression) from the SELECT clause
as part of the WHERE clause criteria, 'cuz the WHERE criteria is
evaluated before the SELECT columns are returned. Therefore, use a date
column in the WHERE criteria. E.g.:

WHERE end_date >= '2006-01-31 14:01:27'

--
MGFoster:::mgf00 <at> earthlink <decimal-point> net
Oakland, CA (USA)

-----BEGIN PGP SIGNATURE-----
Version: PGP for Personal Privacy 5.0
Charset: noconv

iQA/AwUBQ9/ lCIechKqOuFEgEQKbHwC
faitFAiSAnc7qDOuopSI
j1cJpw98AoPx4
W9a72aZdML7ftMsgIKIZ
ynqF
=dwNQ
-----END PGP SIGNATURE-----



jerball wrote:
> The situation is that I have a query where a [thing] is supposed to
> end, in the sense that I don't want it to be pulled back in the query,
> at a certain time (end_date), but that is determined by the timezone
> that [thing] is located in (end_timezone).
>
> Basically, I want to say:
> 1) If the current record has a timezone not equal to the current time
> zone, which is mountain, then change the end_date being pulled back to
> reflect the time zone
> 2) Then, only pull back records that are scheduled to end before that
> time.
>
> I know this statement isn't valid, but I'll post it here to try to
> convey what I'm attempting:
>
> select end_date, end_timezone,
> CASE end_timezone
> WHEN 'ET' THEN DATEADD(hh, 2, end_date)
> WHEN 'CT' THEN DATEADD(hh, 1, end_date)
> WHEN 'PT' THEN DATEADD(hh, -1, end_date)
> ELSE end_date
> END AS theEndDate
> from offers
> where end_timezone = 'PT'
> and theEndDate >= {ts '2006-01-31 14:01:27'}
>
> Of course, this statement fails. Any suggestions on how to do what I'm
> trying to do?

Erland Sommarskog

2006-01-31, 8:24 pm

jerball (jerball@gmail.com) writes:
> The situation is that I have a query where a [thing] is supposed to
> end, in the sense that I don't want it to be pulled back in the query,
> at a certain time (end_date), but that is determined by the timezone
> that [thing] is located in (end_timezone).
>
> Basically, I want to say:
> 1) If the current record has a timezone not equal to the current time
> zone, which is mountain, then change the end_date being pulled back to
> reflect the time zone
> 2) Then, only pull back records that are scheduled to end before that
> time.
>
> I know this statement isn't valid, but I'll post it here to try to
> convey what I'm attempting:
>
> select end_date, end_timezone,
> CASE end_timezone
> WHEN 'ET' THEN DATEADD(hh, 2, end_date)
> WHEN 'CT' THEN DATEADD(hh, 1, end_date)
> WHEN 'PT' THEN DATEADD(hh, -1, end_date)
> ELSE end_date
> END AS theEndDate
> from offers
> where end_timezone = 'PT'
> and theEndDate >= {ts '2006-01-31 14:01:27'}
>
> Of course, this statement fails. Any suggestions on how to do what I'm
> trying to do?


How does if fail? Do you get an error message? Do you get unexpcted
result? Of course, since you constrain end_timezone to PT in the
WHERE condition, the CASE expression appears somewhat superfluous.

For this type of questions it is always a good idea to post:

1) CREATE TABLE statement(s) for the table(s) you are using.
2) INSERT statements with sample data.
3) The desired result given the sample.

This can help to improve the accuracy of the answers you get considerably.


--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se

Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/pr...oads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodin...ions/books.mspx
Sponsored Links





Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive | Programming forum archive

Copyright 2008 droptable.com