Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择带有日期条件的查询_Sql_Date_Ms Access - Fatal编程技术网

Sql 选择带有日期条件的查询

Sql 选择带有日期条件的查询,sql,date,ms-access,Sql,Date,Ms Access,我想在d/mm/yyyy之后或d/mm/yyyy之后和d/mm/yyyy之前的特定日期检索记录,我该怎么做 SELECT date FROM table WHERE date > 1/09/2008; 及 它不起作用。小心点,你在无意中问日期大于一除以九,除以二千零八 在日期周围加上符号,如2008年9月1日,分号字符用于终止SQL语句 您可以在日期值周围使用符号,也可以使用Access的ACE、Jet或任何转换为日期时间函数CDATE的函数。顾名思义,DATETIME总是包含一个tim

我想在d/mm/yyyy之后或d/mm/yyyy之后和d/mm/yyyy之前的特定日期检索记录,我该怎么做

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


它不起作用。

小心点,你在无意中问日期大于一除以九,除以二千零八


在日期周围加上符号,如2008年9月1日,分号字符用于终止SQL语句

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

最好不要在Access中对DATETIME使用BETWEEN:它是使用浮点类型建模的,而且时间是连续的

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

这应该行。

嘿,伙计们,我想你们要找的是使用select命令的这个。 使用此选项,可以指定大于>或小于>的范围 从yearCOLUMN NAME>1996中选择列名

比如说 mysql>


很高兴看到人们再次在正确答案上加上-1,并且没有添加注释来解释为什么是-1。这种方式依赖于默认的日期格式dd/mm/yyyy。另一个答案使用ISO日期格式。OP确实问了我该怎么做,不仅仅是为什么我的sql返回了错误的答案我不明白为什么你会建议不要使用日期间隔。是的,你必须认识到,如果你不考虑时间成分,你的结果可能不会像预期的那样,但这不是BETWEEN的缺陷,但是由于不了解数据的存储,导致了简单的飞行员错误。@David-W-Fenton:飞行员完全了解存储的浮点性质,这意味着使用Access ACE、Jet的唯一方法就是在一天、一秒钟内将值四舍五入到所需的准确度,等,但亚秒的精度是棘手的。。。但是用户现在在查询中使用的是,因此您必须从基表中撤销权限,并使用具有日期时间参数的存储过程公开所需的功能,您可以对这些参数进行取整。。。这一切都太费劲了。@David-W-Fenton:是的,你必须认识到你的结果可能不符合预期——我支持的所有应用程序都要求所有结果都符合预期。难道不是你的…?谁能对无知产生的期望负责?问题不在中间,而是人们常常不了解日期是如何存储的。因此,他们会犯错误。这不是两者之间的一个缺陷,而是由无知造成的一个明显的老错误。建议人们避免因无知而产生的潜在错误,这意味着你不认为他们最好纠正自己的理解不足。@David-W-Fenton:无知是天生的:我们称之为“特权”。非管理员用户将不知道一些基表;相反,他们必须使用“辅助视图”和“过程”。时态数据库是非直观的,例如,有效状态模型中的顺序更新需要五条SQL-92语句、两条INSERT语句和三条update语句-我必须查找它们!如果我记不住它,我就不能指望用户记住它。在我看来,封装这种复杂性是件好事。如果你愿意,无知就是幸福。嗯。。。编辑将代码下面的注释从“不工作”更改为“工作”——完全相反,不是吗?那么现在,你的意图是什么,现在的答案还是编辑之前的问题?
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'); 
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;
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 |
+----------+------------+
select name from pet1 where year(birth)> 1996 OR YEAR(BIRTH)< 1989;
+----------+
| name     |
+----------+
| bowser   |
| chirpy   |
| whistler |
+----------+
3 rows in set (0.00 sec)