Выберите запрос с условием даты - PullRequest
11 голосов
/ 15 ноября 2010

Я хотел бы получить записи в определенные даты после d/mm/yyyy или после d/mm/yyyy и до d/mm/yyyy, как я могу это сделать?

SELECT date
FROM table
WHERE date > 1/09/2008;

и

SELECT date
FROM table
WHERE date > 1/09/2008;
AND date < 1/09/2010

Не работает.

Ответы [ 4 ]

26 голосов
/ 15 ноября 2010

Будьте осторожны, вы невольно спрашиваете, «где дата больше единицы, деленной на девять, деленной на две тысячи восемь»

Поставьте # знаки вокруг даты, например #1/09/2008#

12 голосов
/ 15 ноября 2010

Точка с запятой используется для завершения оператора SQL.

Вы можете либо использовать # знаки вокруг значения даты, либо использовать Access (ACE, Jet, что угодно) для приведения к DATETIME функции CDATE(). Как следует из названия, DATETIME всегда включает элемент времени, поэтому ваши буквальные значения должны отражать этот факт. Формат даты ISO прекрасно понимается механизмом SQL.

Лучше всего не использовать BETWEEN для DATETIME в Access: он моделируется с использованием типа с плавающей запятой и в любом случае время является континуумом;)

DATE и TABLE являются зарезервированными словами в стандартах SQL, ODBC и Jet 4.0 (и, возможно, за их пределами), поэтому их лучше избегать для имен элементов данных:

Ваши предикаты предлагают открытое-открытое представление периодов (где ни дата начала, ни дата окончания не включены в период), что, возможно, является наименее популярным выбором. Меня удивляет, если вы намеревались использовать закрытое открытое представление (где не указана ни его начальная дата, но период заканчивается непосредственно перед конечной датой):

SELECT my_date
  FROM MyTable
 WHERE my_date >= #2008-09-01 00:00:00#
       AND my_date < #2010-09-01 00:00:00#;

В качестве альтернативы:

SELECT my_date
  FROM MyTable
 WHERE my_date >= CDate('2008-09-01 00:00:00')
       AND my_date < CDate('2010-09-01 00:00:00'); 
1 голос
/ 29 июня 2015
select Qty, vajan, Rate,Amt,nhamali,ncommission,ntolai from SalesDtl,SalesMSt where SalesDtl.PurEntryNo=1 and SalesMST.SaleDate=  (22/03/2014) and SalesMST.SaleNo= SalesDtl.SaleNo;

Это должно сработать.

0 голосов
/ 12 ноября 2017

Эй, ребята, я думаю, что вы ищете это с помощью команды выбора. При этом вы можете указать ДИАПАЗОН БОЛЬШЕ, ЧЕМ (>) ИЛИ МЕНЬШЕ, ЧЕМ (<) В MySQL С ЭТОМ ::::: </p>

select* from <**TABLE NAME**> where year(**COLUMN NAME**) > **DATE** OR YEAR(COLUMN NAME )< **DATE**;

НА ПРИМЕРЕ:

select name, BIRTH from pet1 where year(birth)> 1996 OR YEAR(BIRTH)< 1989;
+----------+------------+
| name     | BIRTH      |
+----------+------------+
| bowser   | 1979-09-11 |
| chirpy   | 1998-09-11 |
| whistler | 1999-09-09 |
+----------+------------+

ДЛЯ ПРОСТОГО ДИАПАЗОНА, КАК ИСПОЛЬЗОВАТЬ ТОЛЬКО БОЛЬШЕ / МЕНЬШЕ, ЧЕМ

MySQL> выберите ИМЯ КОЛОННЫ из <<strong> ИМЯ СТОЛА > где год ( ИМЯ КОЛОННЫ )> 1996;

ДЛЯ ПРИМЕРА MySQL>

select name from pet1 where year(birth)> 1996 OR YEAR(BIRTH)< 1989;
+----------+
| name     |
+----------+
| bowser   |
| chirpy   |
| whistler |
+----------+
3 rows in set (0.00 sec)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...