选择带日期条件的查询

时间:2010-11-15 09:53:04

标签: sql date ms-access

我想在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 个答案:

答案 0 :(得分:26)

要小心,你不知不觉地问“日期大于1除以9,除以2和8”。

在日期周围加上#个符号,例如#1/09/2008#

答案 1 :(得分:12)

分号字符用于终止SQL语句。

您可以在日期值周围使用#符号,也可以使用Access(ACE,Jet等)转换为DATETIME函数CDATE()。顾名思义,DATETIME总是包含一个时间元素,因此您的文字值应该反映这一事实。 SQL引擎完全理解ISO日期格式。

最好不要在Access中使用BETWEEN DATETIME:它使用浮点类型建模,无论如何时间是连续统一体;)

DATETABLE是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'); 

答案 2 :(得分:1)

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;

这应该有效。

答案 3 :(得分:-1)

嘿伙计们,我认为你正在寻找的是这个使用select命令。 有了这个你可以指定一个RANGE GREATER THAN(&gt;)或者更糟糕的MySQL(&lt;),这个:::::

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&GT;      从&lt; TABLE NAME &gt;中选择 COLUMN NAME 年份( COLUMN NAME )&gt; 1996;

例如 MySQL的&GT;

select name from pet1 where year(birth)> 1996 OR YEAR(BIRTH)< 1989;
+----------+
| name     |
+----------+
| bowser   |
| chirpy   |
| whistler |
+----------+
3 rows in set (0.00 sec)