SQL date语句

时间:2010-01-21 10:35:39

标签: sql date filter

我需要一些帮助来搞清楚和SQL语句。

我知道我想要的东西我不能表达它。

我使用的是php,因此它不需要排他性的SQL,它可以充当过滤器。

伪代码

$query="SELECT * FROM MyTable WHERE 'TIS'  is not older than 2 days or empty  = ''$ORDER"; }

我表中列的名称中的TIS是以这种格式03-12-09(d,m,y)存储日期。 $ORDER用于根据其他字段(而非日期)的值对值进行排序。

我正在看

SELECT * 
FROM orders
WHERE day_of_order >
(SELECT DATEADD(day,-30, (SELECT MAX(day_of_order) FROM orders)) AS "-30 Days");

但我不认为即时通讯就是这样。

由于

2 个答案:

答案 0 :(得分:3)

尝试以下方法:

SELECT *
  FROM MyTable
  WHERE COALESCE(TIS, SYSDATE) > SYSDATE - INTERVAL '2' DAY
  $ORDER

我不知道你正在使用什么数据库 - 上面使用了Oracle处理时间间隔的方法。如果您正在使用SQL Server,则应关闭以下内容:

SELECT *
  FROM MyTable
  WHERE COALESCE(TIS, GETDATE()) > DATEADD(Day, -2, GETDATE())
  $ORDER

在MySQL中试试这个:

SELECT *
  FROM MyTable
  WHERE COALESCE(TIS, NOW()) > DATE_SUB(NOW(), INTERVAL 2 DAYS)
  $ORDER 

我希望这会有所帮助。

答案 1 :(得分:0)

所以,我在这一切中都很失落。

它是如何解决的:

  • 首先我明白,由于Bob Jarvis的聘用,MySql不支持我使用的声明。

_秒在vincebowdren的评论中,“强烈”建议我将该字段的数据类型更改为Date,确实我没有,这是一个字符串。

对于我来说,在具有String值的字段上尝试使用日期的SQL操作非常愚蠢。

所以我只是RTFM:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

和:

mysql> SELECT something FROM tbl_name -> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;

然后继续将字段值更改为日期。

这是我完美的查询:

$query="SELECT * FROM MyTable WHERE DATE_SUB(CURDATE(),INTERVAL 2 DAY) <= TIS OR TIS = 0000-00-00 $ORDER "; }

我要感谢海报的帮助。