2017-10-05 67 views
1

我正在使用NOT BETWEEN使用Phalcon查詢語言(PHQL)進行查詢,但它不起作用,應用程序掛起。有人可以給我一個關於如何做到這一點的想法。非常感謝你。 有我的查詢。每次查詢運行這段時間如何在Phalcon的查詢中使用NOT BETWEEN?

 $sql = "SELECT c.* FROM table as c 
     WHERE not exists c.activated NOT BETWEEN :f1: and :f2: "; 
     $parameters['f1'] = '2017-10-01'; 
     $parameters['f2'] = '2017-10-05'; 
     $result= $this->modelsManager->executeQuery($sql, 
     $parameters); 

葉:

警告:session_destroy():試圖摧毀用C初始化會話:\ XAMPP \ htdocs中\ MYAPP \程序\插件\ SecurityPlugin.php上線222

回答

1

我從來沒有聽說過爾康查詢語言(PHQL),直到我開了這個問題,但您正在嘗試的語法是不是在SQL無效。試試這個:

$sql = "SELECT c.* FROM table as c WHERE NOT c.activated BETWEEN :f1: and :f2: "; 
    $parameters['f1'] = '2017-10-01'; 
    $parameters['f2'] = '2017-10-05'; 
    $result= $this->modelsManager->executeQuery($sql, 
    $parameters); 

NOTyour_predicate_here

所有你需要的是不要顛倒由謂語返回真/假值。例如如果日期之間的日期是(真),則將其逆轉爲假,因此它相當於「不在」之間。

SQL Fiddle

的MySQL 5.6架構設置

CREATE TABLE Table1 
    (`activated` datetime) 
; 

INSERT INTO Table1 
    (`activated`) 
VALUES 
    ('2016-12-01 00:00:00'), 
    ('2017-10-01 00:00:00'), 
    ('2017-10-05 00:00:00') 
; 

查詢1

SELECT c.* 
FROM table1 as c 
WHERE NOT c.activated BETWEEN '2017-10-01' AND '2017-10-05' 

Results

|   activated | 
|----------------------| 
| 2016-12-01T00:00:00Z | 
+0

真的很有作用的兄弟,謝謝你的好解釋。非常感謝你。 – ALDEAL1993

+0

很好,我可以幫助。你知道如何「接受」答案嗎?這向其他讀者指出存在解決方案。 –