如何在 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".
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'
| activated |
|----------------------|
| 2016-12-01T00:00:00Z |
我正在使用 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".
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'
| activated |
|----------------------|
| 2016-12-01T00:00:00Z |