MySQL - Получает Метки времени между датами

Все,

У меня есть таблица 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 для этого?Спасибо

7
задан Quassnoi 11 January 2010 в 22:55
поделиться

3 ответа

Это оператор квалификатора псепронерного пространства имен . Со ссылкой на странице «Ссылка на MSDN»:

Квалификатор алиасов пространства имен ( :: ) используется для поиска идентификаторов. Он всегда расположен между двумя идентификаторами, как в этом примере:

 Global :: System.console.writeline («Hello World»);
 
-121--1242898-
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
14
ответ дан 6 December 2019 в 06:24
поделиться
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

8
ответ дан 6 December 2019 в 06:24
поделиться

Даты пользователя не будут есть метки времени. Вы можете конвертировать пользователь ввод в 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)
4
ответ дан 6 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: