SQL Server 2012 - поле Datetimeoffset хочет найти полдень для каждого дня

У меня есть база данных, в которой ежечасно отбираются уровни скважин для многочисленных скважин. Дата и время находится в поле datetimeoffset, называемом sampleTime. Я хочу отфильтровать данные, чтобы найти время 18:00:00 UTC для каждого дня. Кажется, я не могу найти способ правильно установить время, чтобы искать это в операторе SQL. У нас SQL Server 2012.

Вот что я пробовал.

SELECT
    wellID, 
    CAST(sampleTime AS time(0)) as "welltime", 
    CAST(sampleTime AS date) as welldate, 
    sampleTime, waterLevel 
FROM 
    dbo.Real_Time_Water_Level_Data
WHERE 
    'welltime' = CAST('18:00:00' AS time)
ORDER BY 
    welldate

я получаю сообщение

Ошибка преобразования при преобразовании даты и/или времени из строки символов

Я предполагаю, что это мой метод попытки установить «18:00:00» как то, что я ищу. Я пробовал без CAST и с помощью CONVERT, но также получаю ошибки.

То, что я действительно хотел бы получить, - это запись местного полуденного времени для каждого дня, но я знаю, что мне придется иметь дело с CST и CDT и просто решить получить конкретную запись на 18:00:00.

Спасибо.


person user1968084    schedule 28.07.2015    source источник


Ответы (1)


SELECT
wellID, 
CAST(sampleTime AS time(0)) as welltime, 
CAST(sampleTime AS date) as welldate, 
sampleTime, waterLevel 
FROM dbo.Real_Time_Water_Level_Data
WHERE CAST(sampleTime AS time(0)) = CAST('18:00:00' AS time)
ORDER BY CAST(sampleTime AS date)

Вы не можете использовать alias в предложении where. Ваш запрос был изменен с этой целью.

person Vamsi Prabhala    schedule 28.07.2015
comment
Совершенство. У меня есть некоторые другие запросы, которые кто-то дал мне, и я всегда задавался вопросом, почему они не просто создали псевдоним. Это объясняет это. Сегодня я узнал две вещи. БЛАГОДАРНОСТЬ!!!!!!!! - person user1968084; 28.07.2015
comment
Итак, теперь я могу получить ежедневные данные в 18:00 по всемирному координированному времени. Я использую SSRS 2012 и хочу, чтобы в отчете был элемент управления, чтобы пользователь мог сделать что-то вроде флажка, чтобы сказать, если он отмечен, они будут получать ежедневные данные только в 18:00. Если не отмечен, они будут получать ежечасные данные. Кажется, нет такого параметра, как флажок. Какие-нибудь мысли? - person user1968084; 28.07.2015