php mysql 日期查找_PHP / MySQL存储和搜索日期

像许多人一样,我对PHP和MySQL中的许多日期函数感到困惑。 我需要的是能够在MySQL中存储日期并能够以人类可读的格式在屏幕上查看日期,使用标准Web表单按月,年或两者的组合进行搜索,或者对其进行排序 几个月或几年。

示例搜索将是过去5年中所有的费用记录。

我有一个javascript日历,在表格中输入月份为02-12-2011。

什么是最好的格式。 该领域应该是什么?

谢谢

请使用DateTime对象。

将日期存储在mysql中作为date格式。

写数据时

$date = new DateTime($_POST['date']);

or

$date = DateTime::createFromFormat('d-m-Y', $_POST['date']);

$query = sprintf("INSERT INTO `data` SET `date` = '%s'", $date->format('Y-m-d'))

读取数据时,创建一个DateTime对象。

$date = new DateTime($row['date']);

然后,您可以以任何您想要的格式打印它,例如你javascript的格式:

echo $date->format('d-m-Y');

看到

http://www.php.net/manual/en/class.datetime.php

和日期格式:

http://www.php.net/manual/en/function.date.php

就搜索而言,您可以在字段上使用mysql Date函数。

对于过去5年2月份的所有记录。

SELECT * FROM `data` WHERE MONTH(`date`) = 2 AND YEAR(`date`) >= YEAR(NOW()) - 5

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

另请注意,DateTime类仅适用于PHP> = 5.3.0

它实际上在5.2以后可用,但有些功能是5.3+

这就是我所拥有的,但它引起了一些问题,这就是我问的原因。首先:MySQL将日期存储为YYYY-MM-DD,javascript将其输入为DD-MM-YYYY(这是我想要的)。我正在转换它,但真的很痛苦。另一个问题是这个。在时间这可能是一个空的字段,我希望它只是空的,但我想因为它是一个日期字段,如果什么都没有,它会自动进入0000-00-000,这会让事情变得混乱。

我正在做一些有价值的转换,但我在上面看到它应该不那么难。要改变一些代码,看看它是如何工作的。谢谢

$ date = DateTime :: createFromFormat('d-m-Y',$ _POST ['date']);给出此错误:可捕获的致命错误:类DateTime的对象无法转换为字符串

在Windows上使用5.3.2版进行测试,但生产将是PHP版本5.2.15 - 因此它可能无法正常工作。我更喜欢那些向后兼容的东西。

你有没有做过$ _POST ['date']的事情?它似乎是一个DateTime对象。 $ _POST ['date']应该是'd-m-Y'格式。也许尝试var_dump($_POST['date'])否则错误来自不同的行。

不,错误来自那条线。如果我把它放在错误发生中删除它,没有错误。 $ _POST ['date']来自一个用于测试目的的硬编码形式。

就在该行之前var_dump($_POST['date'])

MySQL中的列类型应为date。

将被格式化为YYYY-mm-dd所以在php端你需要将它转换为你想要它的格式化(你也可以直接在mysql中进行,但通常你不想这样做,除非你需要执行某种日期在查询中直接进行数学/比较)

它是一个日期,因此将其存储为DATE列。您可以在SQL查询中使用UNIX_TIMESTAMP()或在PHP中使用strtotime,将其转换回可以传递给php date()函数的值,以输出您想要的任何格式日期。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值