更改日期中的时间戳

时间:2013-11-21 16:57:02

标签: php mysql sql date

首先 - 我是一个总菜鸟,所以我甚至不知道我是否称它为正确的事。

这当然也会影响我在搜索时获得的结果。到目前为止,我还没有找到我要找的东西。

除此之外,我的第一语言不是英语......

但是这里有:

我有一个使用mySQL的预订日历。显然,php日期函数存在问题,并且在服务器上修补了一些内容。这样就不会显示任何预订。

我将其缩小到mySQL中存储日期的时间戳:

旧版本的时间是格林尼治标准时间23:00 新版本的格林尼治标准时间00:00为时间

通过从数据库中存储为开始日期和结束日期的数字手动减去82800,我能够进行预订。但是有很多预订,我一直在努力找到一个解决方案,我可以运行SQL查询来更新所有预订。

I would need to test if the date ends in 23:00 GMT
If true, then subtract 82800
And go to the next post in the table

或至少在该领域的某些事情。也许甚至有一种标准的方法来解决这个问题......

由于我对此完全陌生,请随意指出正确搜索的内容或其他地方的解决方案链接。

我通过phpMyAdmin访问数据库。

1 个答案:

答案 0 :(得分:1)

假设您的列处于正确的日期时间格式,您可以在单个查询中执行此操作。 (但一定要先备份。)

UPDATE your_table 
SET booking_time = DATE_SUB(booking_time, INTERVAL 23 HOUR)
WHERE booking_time LIKE '%23:00:00'

如果它在,例如varchar,你可能想写PHP,这需要更长的时间:

  1. 取出所有预订。
  2. 循环穿过它们。每次预订:
  3. 使用标准字符串函数检查预订是否为格林威治标准时间23:00。
  4. 如果是,请提取日期时间并使用strtotime()以Unix时间格式获取它。 (如果不是,则继续循环。)
  5. 从Unix时间值中减去82800,并使用date()将其重新格式化为您想要的日期。
  6. 使用新时间戳更新数据库中的预订行。