在 MYSQL 中使用 CASE 函数和 Zend_DB_Expr
我遇到了以下问题。在我的产品表中,我有两列
Date_start 和 Date_end (它们在我的表中都是 DATE 数据类型)。
我想检查当前日期是否在 Date_start 和 Date_end 之间,那么状态必须为“不可用”,否则状态必须为“可用”。
我如何在 Zend_Db_Expr 中解决这个问题?
我现在有以下查询。
$getProducts = $this->oSelect
->from(array('p'=>'producten'))
->columns(array('link' => "CONCAT('/t/', p.titel_key)"))
->joinLeft(array('c'=>'categorie'),'p.categorie_id = c.id',array('cat_titel'=>'c.titel'))
->joinLeft(array('sc'=>'subcategorie'),'p.subcategorie_id = sc.id', array('subcat_titel'=>'sc.titel'))
->where('p.online = 1');
I'm stuck with the following problem. In my product table i've two columns
Date_start and Date_end (both of them are a DATE datatype in my table).
I want to check if the current date is between the Date_start and Date_end then the status must be 'not available', else it must have the status 'available'.
How can I fix that in Zend_Db_Expr?
I've now the following query.
$getProducts = $this->oSelect
->from(array('p'=>'producten'))
->columns(array('link' => "CONCAT('/t/', p.titel_key)"))
->joinLeft(array('c'=>'categorie'),'p.categorie_id = c.id',array('cat_titel'=>'c.titel'))
->joinLeft(array('sc'=>'subcategorie'),'p.subcategorie_id = sc.id', array('subcat_titel'=>'sc.titel'))
->where('p.online = 1');
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在您的专栏中:
“CASE”应该看起来像这样(为了便于阅读,我将其分开);
Zend_Db_Expr 将接受您提供的任何内容并按字面意思使用它。请记住,如果由于某种原因切换系统,任何数据库特定命令都可能会中断。
In your columns:
The 'CASE' should look something like this (i split it out for readability);
Zend_Db_Expr will take anything you give it and use it literally. Just remember that any DB specific commands might break if for some reason you switch systems.