如何在 Phalcon 的查询中使用 NOT BETWEEN?

How can I use NOT BETWEEN in a query in Phalcon?

我正在使用 NOT BETWEEN 使用 Phalcon 查询语言 (PHQL) 进行查询,但它不起作用,应用程序挂起。 有人可以告诉我如何做。非常感谢你。 有我的问题。

       $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);

每次查询都是 运行 这会留下:

Warning: session_destroy(): Trying to destroy uninitialized session in C:\xampp\htdocs\myapp\app\plugins\SecurityPlugin.php on line 222

在我打开这个问题之前我从未听说过 Phalcon 查询语言 (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);

不是 ( your_predicate_here )

您所需要的只是 NOT 来反转谓词返回的 true/false 值。例如如果日期介于日期之间(真),则将其反转为假,因此它等同于 "not between".

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 |