2013-02-23 32 views
0

所以,我有这个疑问在这里:SQL查询,其中使用日期条件

$strSQL = "SELECT formas.*, SMS_SERVISI.IDTICKET, SMS_SERVISI.MBYLLUR,SMS_SERVISI.time_added,servis_furnitor.id_servis,servis_furnitor.furnitori,servis_furnitor.kohezgjatja 
FROM formas 
LEFT JOIN servis_furnitor ON formas.furnitori = servis_furnitor.id_servis 
LEFT JOIN SMS_SERVISI ON formas.ID = SMS_SERVISI.IDTICKET 
ORDER BY formas.id DESC 
WHERE $today-formas.data_fillim > servis_furnitor.kohezgjatja"; 

的最后一行是错误的,我知道,我的意思是我没事达有.. 我有这样的订单,他们有哪些是formas.data_fillim开始日期和我有今天的日期:

$today = date("Ymd"); 

所以$today-formas.data_fillim之间的差异不应该比servis_furnitor.kohezgjatja大是一个整数本身就说明天

的号码
formas.data_fillim 

是datetype ..

我需要提取其差异有今天的日期,他们的出发日子并不比“kohezgjatja”

任何帮助预定义的天数越大的所有数据请.. 感谢

最新通报

$today = date("Y-m-d H:i:s", time()); 


echo $strSQL = "SELECT formas.*, 
     SMS_SERVISI.IDTICKET, 
     SMS_SERVISI.MBYLLUR, 
     SMS_SERVISI.time_added, 
     servis_furnitor.id_servis, 
     servis_furnitor.furnitori, 
     servis_furnitor.kohezgjatja 
FROM formas 
LEFT JOIN servis_furnitor 
     ON formas.furnitori = servis_furnitor.id_servis 
LEFT JOIN SMS_SERVISI 
     ON formas.ID = SMS_SERVISI.IDTICKET 
WHERE DATEDIFF (day , '$today' , formas.data_fillim) > servis_furnitor.kohezgjatja 
ORDER BY formas.id DESC" 
+2

'WHERE'子句应该在'ORDER BY'子句的_before_之前。 – Oded 2013-02-23 14:02:35

+0

谢谢..但是,反正查询是错误的,最后一部分:) – pyetjegoo 2013-02-23 14:04:56

+1

不同的数据库系统做日期数学不同。请说明你的。 – 2013-02-23 14:05:15

回答

0

一个的正确格式声明

SELECT .... 
FROM... 
WHERE ... 
GROUP .... 
ORDER BY... 

所以你的情况,

SELECT formas.*, 
     SMS_SERVISI.IDTICKET, 
     SMS_SERVISI.MBYLLUR, 
     SMS_SERVISI.time_added, 
     servis_furnitor.id_servis, 
     servis_furnitor.furnitori, 
     servis_furnitor.kohezgjatja 
FROM formas 
LEFT JOIN servis_furnitor 
     ON formas.furnitori = servis_furnitor.id_servis 
LEFT JOIN SMS_SERVISI 
     ON formas.ID = SMS_SERVISI.IDTICKET 
WHERE DATEDIFF (day , $TODAY , formas.data_fillim) > servis_furnitor.kohezgjatja 
ORDER BY formas.id DESC 
+0

谢谢,但这不是问题,我的意思是我知道这是错误的查询..但我得到一个错误: [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]算术溢出错误转换表达式到数据类型的日期时间 – pyetjegoo 2013-02-23 14:07:07

+1

查找DateDiff http://msdn.microsoft.com/en-us/library/ms189794.aspx和DateAdd,以及左边列表中的其他日期函数 – 2013-02-23 14:08:22

+0

什么是'kohezgjatja'?它是一个日期还是int? – Ambrose 2013-02-23 14:11:14

0

像这样的东西应该工作:

where formas.data_fillim <= DateAdd(day, servis_furnitor.kohezgjatja, getdate()) 

你可能要放一个减号在servis_furnitor.kohezgjatja面前,取决于你在那里存储什么。

+0

谢谢.. 我插入这样的: 其中formas.data_fillim <= DateAdd($ today ,servis_furnitor。kohezgjatja,getdate()) 它说错误的参数提供.. – pyetjegoo 2013-02-23 14:16:46

+0

@pyetjegoo:请参阅['DATEADD()'](http://msdn.microsoft.com/en-us/library/ms186819.aspx)if你的确在使用SQL Server。 – 2013-02-23 14:18:51

+0

您能否看到我更新的问题? 我添加了查询,但有些东西是不正确的..我的意思是也许我没有得到天之间的区别.. – pyetjegoo 2013-02-23 14:51:02