Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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
PHP默认时间为23:59:59_Php_Mysql_Wordpress - Fatal编程技术网

PHP默认时间为23:59:59

PHP默认时间为23:59:59,php,mysql,wordpress,Php,Mysql,Wordpress,我正在我的wordpress网站上运行一个抽奖页面。我在创建抽奖帖子时已经有了逻辑设置,抽奖页面已经根据“开始日期”和“结束日期”的自定义字段拉入帖子。我面临的问题是,如果抽奖活动将于2014年1月3日开始,到2014年3月19日午夜(12:00)结束,那么当需要在整个第19天继续时,帖子将被删除。下面是我使用的查询代码。并且它适用于具有“开始日期”和“结束日期”自定义字段的帖子。我只需要在2014年3月19日23:59:59的时候删除此帖子。我需要23:59:59的默认时间。是否有全局更改将使

我正在我的wordpress网站上运行一个抽奖页面。我在创建抽奖帖子时已经有了逻辑设置,抽奖页面已经根据“开始日期”和“结束日期”的自定义字段拉入帖子。我面临的问题是,如果抽奖活动将于2014年1月3日开始,到2014年3月19日午夜(12:00)结束,那么当需要在整个第19天继续时,帖子将被删除。下面是我使用的查询代码。并且它适用于具有“开始日期”和“结束日期”自定义字段的帖子。我只需要在2014年3月19日23:59:59的时候删除此帖子。我需要23:59:59的默认时间。是否有全局更改将使post在23:59:59指定的日期删除?我希望这能解释这一点

 <?php // The Query     

    $startdate = date('Y-m-d G:i:s');
    $enddate = date('Y-m-d G:i:s');
        $args = array(
            'post_type' => 'page',
            'orderby' => 'meta_value_num',
            'order' => 'DESC',
            'meta_query' => array(
            array(
                'key' => 'sweepstakes_startdate',
                'value' => $startdate,
                'compare' => '<='

                ),
            array(
                'key' => 'sweepstakes_enddate',
                'value' => $enddate,
                'compare' => '>='

         )
       )
    );
    $the_query = new WP_Query( $args );

不,除了指定文字
'23:59:59'
之外,没有真正的速记来指定它

似乎最快的补丁只是一些PHP逻辑,在发送到查询之前重置
$enddate

如果
$enddate
的时间成分为午夜,则将发送到查询的值加上一天,减去一秒钟

这确实稍微改变了规格;这意味着指定结束日期值
'2014-03-19 00:00:00'
相当于指定结束日期值
'2014-03-19 23:59:59'
,这基本上意味着不可能指定恰好在午夜结束的抽奖。但您可以在时间
00:00:01
结束抽奖


在MySQL中,我们通常将时段的“结束”(如您所描述)指定为第二天的午夜(而不是前一天的“23:59:59”),并使用“小于”比较,而不是“小于或等于”比较

例如:

WHERE mydatetimecol >= '2014-03-19'
  AND mydatetimecol <  '2014-03-20'
WHERE mydatetimecol >= '2014-03-19'
  AND mydatetimecol <= '2014-03-19' + INTERVAL 1 DAY + INTERVAL -1 SECOND
其中mydatetimecol>='2014-03-19'
和mydatetimecol<'2014-03-20'
而不是

WHERE mydatetimecol >= '2014-03-19'
  AND mydatetimecol <= '2014-03-19 23:59:59'
其中mydatetimecol>='2014-03-19'
mydatetimecol='2014-03-19'
和mydatetimecol<'2014-03-19'+间隔1天
如果我必须“备份”一秒钟,我会使用间隔操作,例如:

WHERE mydatetimecol >= '2014-03-19'
  AND mydatetimecol <  '2014-03-20'
WHERE mydatetimecol >= '2014-03-19'
  AND mydatetimecol <= '2014-03-19' + INTERVAL 1 DAY + INTERVAL -1 SECOND
其中mydatetimecol>='2014-03-19'
还有mydatetimecol
输出:

2015-12-30 15:15:00

2015-12-31 00:00:00

2015-12-3123:59:59


您的列
抽奖\u开始日期
抽奖\u结束日期
的数据类型是什么<代码>日期
日期时间
?meta_键为抽奖开始日期和抽奖结束日期,meta_值为我指定的日期和时间。如果指定了一个时间,它的工作原理和预期的一样,但是如果只指定了一个日期,它将在一个日期到达该日期时立即结束。那么,根据我现有的代码,您如何建议这样做呢?只要去掉比较表上的“=”就行了?@Anthony,我会这么做的。我会让用户指定抽奖结束的日期和时间;如果他们想让抽奖活动在周日全天进行,并在午夜结束,那么请指定“星期一”作为结束日期。(但是,会有一些用户对此感到困惑。当他们说他们希望抽奖一直持续到“星期天”时,他们不会期望它在“星期六”晚上12:01(星期日上午)结束。)