我想在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
它不起作用。
答案 0 :(得分:26)
要小心,你不知不觉地问“日期大于1除以9,除以2和8”。
在日期周围加上#
个符号,例如#1/09/2008#
答案 1 :(得分:12)
分号字符用于终止SQL语句。
您可以在日期值周围使用#
符号,也可以使用Access(ACE,Jet等)转换为DATETIME
函数CDATE()
。顾名思义,DATETIME
总是包含一个时间元素,因此您的文字值应该反映这一事实。 SQL引擎完全理解ISO日期格式。
最好不要在Access中使用BETWEEN
DATETIME
:它使用浮点类型建模,无论如何时间是连续统一体;)
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');
答案 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* 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)