0
我從2個數據庫開始工作,我需要查找匹配最近時間的記錄。這兩個字段都是datetime()。在PDO語句中獲取最近的時間
因此,在本質:
table1.time = 2012-06-07 15:30:00
table2.time = 2012-06-07 15:30:01
table2.time = 2012-06-07 15:30:02
table2.time = 2012-06-07 15:30:03
注:我查詢表(表2)是MSSQL表,table1.time是一個日期()的時間。我需要在table2中找到最接近table1.time的那一行,但是我沒有guarnatee它會完全匹配,所以我需要最接近的。我只需要返回1個結果。
我基於以前的一個stackoverflow查詢的例子嘗試了下面的SQL,但它失敗了。
表1是一個MySQL數據庫,在那裏表2是MSSQL和查詢發生在表2(MSSQL)
try {
$sql = "
SELECT
PCO_AGENT.NAME,
PCO_INBOUNDLOG.LOGIN AS LOGINID,
PCO_INBOUNDLOG.PHONE AS CALLERID,
PCO_INBOUNDLOG.STATION AS EXTEN,
PCO_INBOUNDLOG.TALKTIME AS CALLLENGTH,
PCO_INBOUNDLOG.CHANNELRECORDID AS RECORDINGID,
PCO_SOFTPHONECALLLOG.RDATE,
PCO_INBOUNDLOG.RDATE AS INBOUNDDATE
FROM
PCO_INBOUNDLOG
INNER JOIN
PCO_LOGINAGENT ON PCO_INBOUNDLOG.LOGIN = PCO_LOGINAGENT.LOGIN
INNER JOIN
PCO_SOFTPHONECALLLOG ON PCO_INBOUNDLOG.ID = PCO_SOFTPHONECALLLOG.CONTACTID
INNER JOIN
PCO_AGENT ON PCO_LOGINAGENT.AGENTID = PCO_AGENT.ID
WHERE
PCO_INBOUNDLOG.STATION = :extension
AND ABS(DATEDIFF(:start,PCO_SOFTPHONECALLLOG.RDATE))
";
$arr = array(":extension" => $array['extension'], ":start" => $array['start']);
$query = $this->mssql->prepare($sql);
$query->execute($arr);
$row = $query->fetchAll(PDO::FETCH_ASSOC);
$this->pre($row);
}
我收到以下錯誤的時刻:
SQLSTATE[HY000]: General error: 174 General SQL Server error: Check messages from the SQL Server [174] (severity 15) [(null)]SQLSTATE[HY000]: General error: 174 General SQL Server error: Check messages from the SQL Server [174] (severity 15) [(null)]
您是否嘗試直接在SQL Server中執行此操作? –
不幸的是,我也沒有直接訪問SQL服務器 – mauzilla
也如上所述,我使用多個連接來獲取數據來獲取日期。 – mauzilla