2015-06-14 2 views
1

Что я пытаюсь сделать, так это выбрать конкретный месяц и конкретный день с меткой времени. То, что я попытался это:sqlite Выберите конкретный день определенного месяца и никакого конкретного месяца

SELECT t FROM test WHERE t BETWEEN '2015-08-01 00:00:00' AND '2015-08-01 23:59:59'; 

с 8 будучи месяца, специфические 1 является конкретный день, но это ничего не возвращает.

Другая вещь, которую я хотел бы сделать, это выбрать определенный день каждого месяца года, что я пытался, что я знаю, что это неправильно, но я не знаю, как еще сделать это:

SELECT t FROM test WHERE t BETWEEN '2015-01-12 00:00:00' AND '2015-24-12 23:59:59'; 

Я могу понять, почему это не сработает, поскольку я беру каждую временную метку со дня первого месяца в тот же день в прошлом месяце, но как я могу это сделать?

редактировать: Я обнаружил, почему она не работает для первого примера переменная я имел в течение дня содержится ряд так, когда она была ниже, чем 10 он только сказал # а не 0 #

+0

Пожалуйста, отредактируйте ваш вопрос и предоставите образцы данных. Небольшой скрипт SQL может также помочь нам понять, что происходит неправильно. –

ответ

2

Вы можете просто использовать a LIKE. Кроме того, ваш промежуток не будет работать для краевых случаев, если у вас есть миллисекунды после: 59.

WHERE t LIKE '2015-08-01 %' 

и:

WHERE t LIKE '2015-%-12 %' 

Кроме того, в отношении оптимизации, timestamp или подобных текстовой сродствы (хотя документы, кажется, намекают на это время числа). Он должен содержать like optimization, если у вас есть индекс, но использование диапазонов, вероятно, будет лучше, если вы сможете управлять им. Я бы проверял планы запросов.

+0

Что вы подразумеваете под запросами? Я все еще новичок в sql, и я немного разбираюсь в пробках и ошибках и ранее не слышал планов запросов? – Sumsar1812

+1

@ Sumsar1812 Когда вы выполняете запрос, он «планирует» наиболее оптимальный способ его выполнения. Иногда вы создаете индексы для ускорения доступа к определенному полю (например, в предложении 'where'). Если вы делаете это на небольшом количестве данных или в качестве теста или одно время, это может иметь значение. Но если это то, что будет расти, чтобы быть большим или использовать много, тогда вы захотите убедиться, что он хорошо работает. Один из способов сделать это - проверить план запроса. – woot