SQL=>Between=>Time??? Sos
Подскажите пожалуйста как можно вытащить записи созданные по времени?
Например мне нужно вытащить все записи из таблицы по поле Ph_Time тип (Дата/время->Длинный формат времени) БД Access в промежутке c 09:00:00 по 20:00:00
Пробовал так “select * from Telephone where Ph_Time between #09:00:00# and #20:00:00#”
Но он мне выдает ошибку: <<Query1: Field ’00:00#’ is of an unknown type>>? В чем у меня проблема? И как можно вытащить эти записи через SQL-запрос?
:sad:
Здравствуйте всем!
Подскажите пожалуйста как можно вытащить записи созданные по времени?
Например мне нужно вытащить все записи из таблицы по поле Ph_Time тип (Дата/время->Длинный формат времени) БД Access в промежутке c 09:00:00 по 20:00:00
Пробовал так “select * from Telephone where Ph_Time between #09:00:00# and #20:00:00#”
Но он мне выдает ошибку: <<Query1: Field ’00:00#’ is of an unknown type>>? В чем у меня проблема? И как можно вытащить эти записи через SQL-запрос?
:sad:
А может попробовать так:
“select * from Telephone where Ph_Time =>#09:00:00# and Ph_Time <= #20:00:00#”
А может попробовать так:
“select * from Telephone where Ph_Time =>#09:00:00# and Ph_Time <= #20:00:00#”
Так то же пробовал, но я понял в чем у меня проблема, знак ":" он понимает не как разделитель времени, а как динамическое переменное и поэтому руг-ся на :00 как бы не определенный перменный.
Это у меня Query1-запрос в Builder-е.
Хотя я выкрутился по другому, но это нужная вещь для меня, так что буду рад если кто-нибудь ответит.
Так то же пробовал, но я понял в чем у меня проблема, знак ":" он понимает не как разделитель времени, а как динамическое переменное и поэтому руг-ся на :00 как бы не определенный перменный.
Это у меня Query1-запрос в Builder-е.
Хотя я выкрутился по другому, но это нужная вещь для меня, так что буду рад если кто-нибудь ответит.
Попробуй указывать время вот так:
'09:00:00'
Попробуй указывать время вот так:
'09:00:00'
Так то же пробовал, но тогда он ругался на несоответствие типов данных :-? .
Так то же пробовал, но тогда он ругался на несоответствие типов данных :-? .
Тогда используй стандартный подход - Запрос пиши так:
select * from where Time >= :STime and Time <= :ETime
а в коде соответственно пиши:
TTime StartTime;
Query1->Params->ParamByName(":STime")->AsTime = StartTime;
.....
Query1->Open();
Вот еще что. Проверь региональные настройки Win - возможно есть смысл пошерудить длинный/короткий формат даты.
В региональных настройках то же шарился, и никокого результата. Теперь вот думаю попробовать классическим методом, как предлогает Мoonmike. Но пока я выкрутился из ситуации и эту программу надо довести до ума т. е. создать дистрибутивку.
И у меня возникли некоторые вопросы, думаю для этого лучше открою новую тему, если сможете ответьте тама пожалуйста, спасибо за помощь.
where
TIME_FIELD>= CAST('#09:00:00#' as TIME)
and TIME_FIELD<= CAST('#20:00:00#' as TIME)
или
where
TIME_FIELD>= CAST('09:00:00' as TIME)
and TIME_FIELD<= CAST('20:00:00' as TIME)
вместо as TIME можно также попробовать
TIMESTAMP
Description
Use CAST to convert the value in the specified
column to the data type specified. CAST can also
be applied to literal and calculated values. CAST
can be used in the columns list of a SELECT
statement, in the predicate for a WHERE clause,
or to modify the update atom of an UPDATE
statement.
The Data_Type parameter may be one of most column
data type applicable to the table type used:
CHAR, INTEGER, NUMERIC, and so on. Certain column
types cannot be used as the source or target data
types: BLOB, MEMO, and BYTES.