Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将日期与curdate wordpress进行比较_Mysql_Wordpress_Date - Fatal编程技术网

Mysql 将日期与curdate wordpress进行比较

Mysql 将日期与curdate wordpress进行比较,mysql,wordpress,date,Mysql,Wordpress,Date,我正在尝试使用wordpress中的过滤器来选择今天的所有帖子: function filter_where( $where = '' ) { $where .= " AND post_date = CURDATE() "; return $where; } 不工作,但如果使用=获取帖子 感谢您的帮助我认为post_date是一个日期时间字段,而不是日期字段。尝试像和DATEpost\u date=CURDATE这样的方法来比较日期,而不是时间 编辑:您现在意识到MySQL服务

我正在尝试使用wordpress中的过滤器来选择今天的所有帖子:

function filter_where( $where = '' ) {
    $where .= " AND post_date = CURDATE() ";
    return $where;
}
不工作,但如果使用=获取帖子


感谢您的帮助

我认为post_date是一个日期时间字段,而不是日期字段。尝试像和DATEpost\u date=CURDATE这样的方法来比较日期,而不是时间

编辑:您现在意识到MySQL服务器的时区设置错误。您可以根据每个连接更正此问题。我建议找到Wordpress连接到数据库的代码位,并在连接后添加这两行代码。您可能需要搜索mysql\u connect或mysql\u select\u db来查找此内容

$query = "SET time_zone = 'Chile/Santiago'";
mysql_query($query);
完成此操作后,根据我最初的回答,以下代码可能会正常工作:

function filter_where( $where = '' ) {
    $where .= " AND DATE(post_date) = CURDATE() ";
    return $where;
}
如果post_date是datetime或timestamp列,则应使用:

AND post_date >= CURDATE()
AND post_date < CURDATE() + INTERVAL 1 DAY        --- this is needed just in case
                                                --- your table has posts with 
                                                --- future dates (by error)

什么类型的列是post_-date?完整查询是SELECT SQL_-CALC_-FOUND_-ROWS wp_-posts.*从wp_-posts中1=1和wp_-posts.post_-type='agenda_-cultural'和wp_-posts.post_-status='future'和DATEwp_-posts.posts日期=CURDATE按wp_-posts排序。posts-date ASC限制0,10damm,我想我的服务器的工作日期不正确。智利的1月3日仍然是1月2日。使用和DATEwp_posts.post_date=date_ADDCURDATE,INTERVAL-1天有效添加-1天是个坏主意。两个原因-首先,使用DATE_SUBNOW,间隔1天。第二,不要做所有的事情——我相信你会发现这并不是一天的不同,而是几个小时的不同。我将在下面为您发布一个新的答案,其中包含更好的语法。它也不起作用。但是日期时间是Y-m-dh:i:s。在任何情况下,它都将是DATEpost\u date=DATECURDATE?DATECURDATE与date相同-它已返回date类型的值。比较DATEpost_date和CURDATE应该有效。第二个CURDATE-应该是CURDATE缺少一些括号。不管怎样,使用DATEpost_date=CURDATE应该更干净,并产生我认为相同的结果?@SpoonNZ:Thnx,添加了缺少的括号。它可能更干净,但是查询不能使用表上的任何索引,它必须扫描整个表,并将每一行的datetime转换为date以进行比较。如果你有几千篇或更多的文章,试着给这两个版本计时。@returnvoid:处理日期和时区不是一件容易的事。首先,您必须了解WordPress是如何存储post_日期时间的。它使用UTC吗?我想是的,但不确定,还是其他时区?然后你必须决定今天是什么意思。今天的智利与今天的智利不一样Greece@returnvoid:你也可以试试