2013-01-09 23 views
0

我有这样的查询,这有助于我只显示有一个开始日等于今天的记录..在SQL查询添加条件有关日期

我有昨天variable..i需要访问这样的:

$strSQL = "SELECT forma.*, SMS_MONTIME.IDTICKET, SMS_MONTIME.MBYLLUR,SMS_MONTIME.time_added 
FROM forma 
LEFT JOIN SMS_MONTIME ON forma.ID = SMS_MONTIME.IDTICKET WHERE forma.data_fillim = '$today' ORDER BY forma.id DESC"; 

我需要修改它是这样的:

$strSQL = "SELECT forma.*, SMS_MONTIME.IDTICKET, SMS_MONTIME.MBYLLUR,SMS_MONTIME.time_added 
FROM forma 
LEFT JOIN SMS_MONTIME ON forma.ID = SMS_MONTIME.IDTICKET WHERE forma.data_fillim = '$today' AND forma.data_fillim = '$yesterday' ORDER BY forma.id DESC"; 

感谢

+0

此条件:'forma.data_fillim = '今天$' 和备考.data_fillim ='$ yesterday''我认为如果今天和昨天都设置正确,就不会返回true。 –

+0

他们都是YMD格式.. –

+0

日期可能是今天和昨天同时?也许你的意思是'forma.data_fillim ='$ today'或者forma.data_fillim ='$ yesterday'' –

回答

0

拍摄,但如何关于改变AND到OR?如果您昨天已经拥有与$ today相同的格式,但只是它是不同的日期,那么您可以使用OR。或者你可以使用:

forma.data_fillim in ('$today', '$yesterday') 

这也取决于你真的想做什么。如果你今天昨天和$期待的项目包括$的结果,那么你可以使用:

(forma.data_fillim >= '$yesterday') and (forma.data_fillim <= '$today') 

如果你期待的结果项目,是指$昨天或$今天的项目,那么你可以使用上面的代码片段(使用IN声明的那个)或使用这个

(forma.data_fillim = '$yesterday') or (forma.data_fillim = '$today') 

您可以使用BETWEEN语法,这对MySQL和MSSQL是正确的。我不知道有关Oracle:

我希望这有助于

0

日期函数取决于您使用的数据库。如果它是甲骨文你可以使用“日期-1”,它会减去一天,在sqlserver和mysql我不知道这个“快捷方式”,但我敢肯定,他们有一个dateadd()或adddate( ) 或者其他的东西。

它也将有所不同,如果你的数据库可以解释字符串'$今天实时的日期,这样就可以在黑暗中一个日期函数使用它

WHERE forma.data_fillim = '$today' OR forma.data_fillim = '$today' - 1 
+0

昨天应该是昨天的日期,所以我不需要-1我猜... 我用这个,我的意思是它就像我已经设置它,但它没有工作.. –

+0

我的意思是'今天' - 1但键入它错误。另外,你可能应该改变AND和OR,因为日期不能同时是两个日期,或者检查你的逻辑,如果这不是你想要完成的 – beder