Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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_Filter - Fatal编程技术网

SQL日期语句

SQL日期语句,sql,date,filter,Sql,Date,Filter,我需要一些帮助来弄清楚SQL语句 我知道我想要什么,但我无法表达 我使用的是php,所以它不需要是唯一的SQL,它可以充当一个过滤器 伪码 $query="SELECT * FROM MyTable WHERE 'TIS' is not older than 2 days or empty = ''$ORDER"; } 在我的表格中的列名称中,我以这种格式存储日期03-12-09(d、m、y)。 $ORDER用于根据其他字段(而非日期)中的值对值进行排序 我在看 SELECT * FRO

我需要一些帮助来弄清楚SQL语句

我知道我想要什么,但我无法表达

我使用的是php,所以它不需要是唯一的SQL,它可以充当一个过滤器

伪码

$query="SELECT * FROM MyTable WHERE 'TIS'  is not older than 2 days or empty  = ''$ORDER"; }
在我的表格中的列名称中,我以这种格式存储日期
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");
但是我不认为我在这方面是正确的

谢谢

请尝试以下操作:

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 
我希望这能有所帮助。

尝试以下方法:

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 

我希望这能有所帮助。

所以,我在这一切中迷失了方向

它是如何解决的:

  • 首先,由于Bob Jarvis的Elighthment,我知道MySql不支持我使用的语句
_vincebowdren wich“强烈”建议我将该字段上的数据类型更改为
Date
,实际上我没有,它是一个字符串

对我来说,在一个有字符串值的字段上尝试对日期使用SQL操作是相当愚蠢的

所以我只是RTFM:

以及:

mysql>从tbl\u name中选择一些内容

->其中DATE_SUB(CURDATE(),INTERVAL 30 DAY)所以,我对这一切都很迷茫

它是如何解决的:

  • 首先,由于Bob Jarvis的Elighthment,我知道MySql不支持我使用的语句
_vincebowdren wich“强烈”建议我将该字段上的数据类型更改为
Date
,实际上我没有,它是一个字符串

对我来说,在一个有字符串值的字段上尝试对日期使用SQL操作是相当愚蠢的

所以我只是RTFM:

以及:

mysql>从tbl\u name中选择一些内容

->WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY)这是哪个SQL RDBMS?我使用的是MySql。我使用MAMP在本地机器上开发。我强烈建议更改TIS字段的数据类型,使其成为实际日期。将其存储为dd-mm-yy格式的字符串会使根据数据的年龄对数据进行过滤或排序变得更加困难。这是哪种SQL RDBMS?我使用的是MySql。我使用MAMP在本地机器上开发。我强烈建议更改TIS字段的数据类型,使其成为实际日期。将其存储为dd-mm-yy格式的字符串会使根据数据的年代对其进行筛选或排序变得更加困难。好的,然后尝试从MyTable中选择*,其中COALESCE(TIS,NOW())>DATE_SUB(NOW,INTERVAL 2 DAYS)ORDER BY$ORDER我什么也得不到。来组织这个<代码>订购依据
不是必需的,因为它包含在
$ORDER
中-我仍然不确定在
TIS
-联合是什么意思?谢谢你的帮助。我试着运行我的查询目录,我得到:#1305-FUNCTION FACT.DATEADD不存在,据我所知,我试图查询数据库名而不是其中的表?事实是我的数据库名。发生此错误是因为MySQL不支持DATEADD函数。我在上面的答案中加入了MySQL版本的语句——试试看。COALESCE返回其参数列表中的第一个非空值(当参数列表从左到右读取时)。感谢您的解释。我不能让它工作,我现在必须离开。感谢您的帮助。好的,然后尝试从MyTable中选择*,其中COALESCE(TIS,NOW())>DATE_SUB(现在,间隔2天)ORDER BY$ORDER我什么也得不到。来组织这个<代码>订购依据
不是必需的,因为它包含在
$ORDER
中-我仍然不确定在
TIS
-联合是什么意思?谢谢你的帮助。我试着运行我的查询目录,我得到:#1305-FUNCTION FACT.DATEADD不存在,据我所知,我试图查询数据库名而不是其中的表?事实是我的数据库名。发生此错误是因为MySQL不支持DATEADD函数。我在上面的答案中加入了MySQL版本的语句——试试看。COALESCE返回其参数列表中的第一个非空值(当参数列表从左到右读取时)。感谢您的解释。我不能让它工作,我现在必须离开。我感谢你的帮助。