MySQL日期比较过滤器
我有一些SQL代码,很好用,并从我的Wordpress数据库返回所需的结果。MySQL日期比较过滤器
但是,我根本不能让我围绕着如何筛选发言权之间的日期头:
2010-12-10 00:00:00
和
2010-12-15 00:00:00
这里是我的SQL代码:
$SQL_K = "SELECT SQL_CALC_FOUND_ROWS wp_posts.*
FROM wp_posts
JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)
WHERE 1 = 1
AND wp_posts.post_type = 'post'
AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')
AND wp_postmeta.meta_key = 'expiry_date'
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC
LIMIT 0, 100 ";
WHERE date_column BETWEEN STR_TO_DATE('2010-12-10', '%Y-%m-%d') AND STR_TO_DATE('2010-12-15', '%Y-%m-%d')
像这样?
编辑:忘了结束报价。哎呀
EDITv2:将您的代码与更新的查询
EDITv3:小优化 删除1 = 1相比,使用IN()用于wp_posts.post_status
SELECT SQL_CALC_FOUND_ROWS wp_posts.*
FROM wp_posts
JOIN wp_postmeta
ON (wp_posts.ID = wp_postmeta.post_id)
WHERE wp_posts.post_type = 'post'
AND (wp_posts.post_status IN ('publish','private'))
AND wp_postmeta.meta_key = 'expiry_date'
AND ___INSERT_NAME_OF_DATE_COLUMN_HERE___
BETWEEN STR_TO_DATE('2010-12-05', '%Y-%m-%d')
AND STR_TO_DATE('2010-12-15', '%Y-%m-%d')
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC
LIMIT 0, 100
感谢队友,我没有得到任何结果现在(我的错,虽然粗糙的): $ SQL_K =“SELECT SQL_CALC_FOUND_ROWS wp_posts * FROM wp_posts JOIN wp_postmeta ON(wp_posts.ID = wp_postmeta.post_id),其中1 = 1 AND wp_posts.post_type ='post'AND(wp_posts.post_status ='publish'or wp_posts.post_status ='private')AND wp_postmeta.meta_key ='expiry_date'WHERE wp_postmeta.meta_key ='expiry_date'BETWEEN STR_TO_DATE('2010-12- ('%Y-%m-%d')AND STR_TO_DATE('2010-12-15','%Y-%m-%d')GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 100“; – 2010-12-10 19:16:10
我在那里看到一个重复的WHERE。尝试删除它,并用'AND'替换它。我为了放置而不是语法显示WHERE子句。 ;-) – 2010-12-10 19:20:10
布拉德,非常感谢你的代码和帮助。结果现在显示,但如果我将日期更改为2010-12-06 - 2010-12-08(其中包括)之间,相同的结果显示等,并没有被过滤..所以接近 – 2010-12-10 19:27:30
use between date1 and date2
太感谢队友 – 2010-12-10 23:12:42
怎么办你打电话给今年的第15个月吗? – 2010-12-10 18:55:51
oops,good spot ring0 – 2010-12-10 18:57:11
2010-15-10与MySQL默认接受的YYYY-MM-DD格式不匹配,所以我会修复这些实例以便能够使用MySQL日期相关功能。 – 2010-12-10 18:57:38