我正在进行从定制博客到Wordpress的博客迁移。 Wordpress在数据库中寻找的一个字段是设置为GMT的日期/时间戳,比我们的时间提前4个小时。所以我基本上需要采用我们的日期/时间戳(YYYY-MM-DD HH:MM:SS格式),并添加四个小时。我在看MySQL命令“ADDTIME”,但我认为这只适用于选择,而不适用于插入。
我编写了一个脚本,将日期分解为部分,并且增加了4个小时,但是当4小时推进到下一天/月/年时需要检查的逻辑似乎有点过分。
答案 0 :(得分:31)
date($format, strtotime("$date + 4 hours"));
答案 1 :(得分:14)
没有什么可以阻止在INSERT
或UPDATE
中使用ADDTIME()
,但DATE_ADD()
可能最有效:{/ p>
INSERT INTO table_name
SET my_datetime = DATE_ADD('2009-11-01 19:30:00', INTERVAL 4 HOURS),
...other insert columns here... ;
答案 2 :(得分:6)
怎么样:
date( "Y-m-d H:i:s", strtotime( "2009-08-09 23:44:22" )+4*60*60 )
甚至
date( "Y-m-d H:i:s", strtotime( "2009-08-09 23:44:22 + 4 hours" ) )
可能需要进行一些错误检查,但应解决您的问题。
答案 3 :(得分:3)
或者更好的SQL
DATE(DATE_ADD(`Table`.`Column`, INTERVAL 4 HOURS))
答案 4 :(得分:2)
对于使用DATE_ADD的所有答案,正确的语法是“4 HOUR”而不是“4 HOURS”(至少在当前版本的MySQL中):
UPDATE table SET field = DATE_ADD(field, INTERVAL 4 HOUR);
答案 5 :(得分:1)
看起来您的数据库的TZ设置为GMT(UTC),这是应该的。 添加到数据库时,您需要将本地日期转换为GMT。
从MySQL 5.1参考手册:
CONVERT_TZ(dt,from_tz,to_tz)
CONVERT_TZ()将日期时间值dt从from_tz给定的时区转换为to_tz给定的时区,并返回结果值。可以按第5.10.8节“MySQL服务器时区支持”中所述指定时区。如果参数无效,则此函数返回NULL。
如果在将from_tz转换为UTC时,该值超出了TIMESTAMP类型支持的范围,则不会发生转换。 TIMESTAMP范围在第11.1.2节“日期和时间类型概述”中进行了描述。
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
-> '2004-01-01 13:00:00'
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
-> '2004-01-01 22:00:00'
答案 6 :(得分:0)
我使用过这种方法:
$format = Y-m-d; //you can use any format if you want
$date = $row['date']; // from mysql_fetch_array
$date2 = date($format, strtotime("$date + 4 week"));
echo $date;
答案 7 :(得分:0)
如果你使用(日/月/年)[巴西日期格式]如下,它不起作用:
$ todays_date = date(“ d / m / Y H:i:s”);
echo“服务器日期/小时”。 $ todays_date;
回显“服务器日期/小时+2小时”。日期(“ d / m / Y H:i:s”, strtotime(“$ todays_date + 2小时”));
<强>结果:强>
服务器日期/小时 10/04 / 2012 07:44:36
服务器日期/小时 + 2小时 04/10 / 2012 09:44:36
你需要你(月/日/年)并且它完美无缺:
$ todays_date = date(“ m / d / Y H:i:s”); echo“服务器日期/小时”。
$ todays_date “
”。 echo“”服务器日期/小时+2小时“。日期(” m / d / Y H:i:s“,strtotime(”$ todays_date + 2小时“));
<强>结果:强>
服务器日期/小时 04/10 / 2012 07:44:36
服务器日期/小时 + 2小时 04/10 / 2012 09:44:36
答案 8 :(得分:0)
100%工作
<?php
$datee= date("Y-m-d", strtotime("$last_update+ 10 hours"));
$timee= date("H:i:s", strtotime("$last_update+ 10 hours"));
?>
Last update was on: <?php echo $datee; ?> at <?php echo $timee; ?>
$ last_update是来自mysql的值内容时间戳
结果将是这样的“上次更新时间:2015-02-05 05:01:43”
答案 9 :(得分:0)
<?php
function data_time($DT, $pm, $val, $time_type){
$time = date("H:i:s");
$date = date("d.m.Y");
if($DT=='d'){
switch($pm){
case '+': $newData = date("d.m.Y ", strtotime("$date + $val $time_type"));
break;
case '-': $newData = date("d.m.Y ", strtotime("$date - $val $time_type"));
break;
}
return $newData;
}
if($DT=='t'){
switch($pm){
case '+': $newTime = date("H:i:s ", strtotime("$time + $val $time_type"));
break;
case '-': $newTime = date("H:i:s ", strtotime("$time - $val $time_type"));
break;
}
return $newTime;
}
}
$newData = data_time('t','+',5,'year')
//or
$DataTime = 'd'; // 't' or 'd'
$PlusMinus ='+'; // '+' or '-'
$val = 1; // 0-9
$DMT ='month'; // 'day', 'month' or 'year'
$newData = data_time($DataTime, $PlusMinus, $val, $DMT);
echo $newData;
?>
答案 10 :(得分:0)
UPDATE table SET field = DATE_ADD(field, INTERVAL 4 HOURS);
因此,在php中添加fucntion到列
非常有用