Все,
У меня есть таблица MYSQL со столбцом, названным меткой времени. Это имеет DATETIME
тип данных и имеет значения как "01.10.2009 15:25:08', "01.10.2009 15:30:05', "04.10.2009 15:40:01', и т.д.
Я хочу записать SQL-запрос для выбора всех значений в поле метки времени, происходящем между двумя датами.. что-то вроде этого:
select timestamp from tablename where timestamp >= userStartDate and timestamp <= userEndDate
userInput даты не будут иметь частей времени. Можно ли предложить корректный MySQL Query Syntax для этого?Спасибо
Это оператор квалификатора псепронерного пространства имен . Со ссылкой на странице «Ссылка на MSDN»:
-121--1242898-Квалификатор алиасов пространства имен (
::
) используется для поиска идентификаторов. Он всегда расположен между двумя идентификаторами, как в этом примере:Global :: System.console.writeline («Hello World»);
SELECT timestamp
FROM tablename
WHERE timestamp >= userStartDate
AND timestamp < userEndDate + INTERVAL 1 DAY
Это выберет каждую запись, имеющуюся часть даты между USERSTARTARTDATTATE
и userenddate
, при условии, что эти поля имеют тип дата
(без порции).
Если даты начала и конечных поясов приходят строки, используйте str_to_date
для преобразования из любого данного формата:
SELECT timestamp
FROM tablename
WHERE timestamp >= STR_TO_DATE('01/11/2010', '%m/%d/%Y')
AND timestamp < STR_TO_DATE('01/12/2010', '%m/%d/%Y') + INTERVAL 1 DAY
SELECT timestamp
FROM myTable
WHERE timestamp BETWEEN startDate AND endDate
Для достижения наилучших результатов при использовании
между
с дата или временными значениями следует использоватьquast ()
для явного преобразования значений в нужный тип данных. Примеры: если вы сравнитеdateTime
до двух значений, преобразуют значения
значение
значения DateTime
. Если вы используете строковую константу, такую как'2001-1-1'
в сравнении с датой, отливьте строку на
дату
.
-
http://dev.mysql.com/doc/refman/5.0/ru/comparisons-operators.html#operator_between
Даты пользователя не будут есть метки времени. Вы можете конвертировать пользователь ввод в Timestamp с:
mysql> SELECT UNIX_TIMESTAMP('2007-11-30 10:30:19');
-> 1196440219
Ваш запрос может стать:
select timestamp from tablename
where timestamp >= UNIX_TIMESTAMP(userStartDate)
and timestamp <= UNIX_TIMESTAMP(userEndDate)