php - 更改日期中的时间戳

标签 php mysql sql date

首先 - 我是个菜鸟,所以我什至不知道我的称呼是否正确。

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

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

但是这里是:

我有一个使用 mySQL 的预订日历。显然,php 日期函数出现了问题,服务器上的某些内容已被修补。这会导致不显示任何预订。

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

旧版本的时间为 23:00 GMT 新版本的时间为 00:00 GMT

通过从数据库中存储为开始日期和结束日期的数字中手动减去 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 访问数据库。

最佳答案

假设您的列采用正确的日期时间格式,您可以在单个查询中完成。 (不过,请务必先进行备份。)

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. 使用新的时间戳更新数据库中的预订行。

关于php - 更改日期中的时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20127207/

相关文章:

php - 用PHP搜索查询

MySQL 错误 1093 - 无法在 FROM 子句中指定要更新的目标表

sql - 合并 : when not matched by source - update rows

mysql - 基于订单频率的 SQL 客户订单统计

php - 使用 Symfony 表单上传多个文件

php - 无需用户控制自动运行php代码

php - 检查 PHP cURL 服务器响应中的 header

php - 选择多行并连接成一个 - 在 joomla

mysql - 通过依赖于 SQL 的架构预防操作风险

php - 条件 URI 段错误 - Codeigniter