Php 如何仅存储月份和年份,并将所有日期的默认日期设置为1?
我的日期是Php 如何仅存储月份和年份,并将所有日期的默认日期设置为1?,php,mysql,sql,date,Php,Mysql,Sql,Date,我的日期是2010-12-24 我需要将日期存储为数据库表中的2010-12-01。这应适用于所有日期 插入另一个日期2010-12-25时,它也应存储为2010-12-01,对于2017-01-29,它应存储为2017-01-01 如何将日期设置为默认值1 我希望这是清楚的。感谢您的帮助。谢谢 <?php $date='2017-01-12'; $date=explode('-',$date); $date[2]=str_replace($date[2],'01',$date[2])
2010-12-24
我需要将日期存储为数据库表中的2010-12-01
。这应适用于所有日期
插入另一个日期2010-12-25
时,它也应存储为2010-12-01
,对于2017-01-29
,它应存储为2017-01-01
如何将日期设置为默认值1
我希望这是清楚的。感谢您的帮助。谢谢
<?php
$date='2017-01-12';
$date=explode('-',$date);
$date[2]=str_replace($date[2],'01',$date[2]);
$date=implode('-',$date);
print_r($date);
因此,它总是将一天替换为01
。
在执行新日期的insert查询后,因为新日期已在php中修改。一种更简单的方法是使用php的内置日期函数:
// here's your date
$date='2017-01-12';
// and here we transform it as we want
$date_first = date('Y-m-01', strtotime($date));
// check out the result :)
echo $date_first;
不过,它可以在mysql中很好地完成
set @date = '2017-12-25';
select str_to_date(CONCAT(YEAR(@date),' ',MONTH(@date),' 1'), '%Y %m %d');
您不需要使用@date变量,只需将@date替换为需要插入的日期,并使用str_to_date将日期替换为1。您可以直接在MySql中实现它,如下所示:
SELECT DATE_SUB('2010-12-25', INTERVAL DAY('2010-12-25')-1 DAY)
说明:
1. DAY('2010-12-25')-1 DAY // will return 24
2. DATE_SUB('2010-12-25', INTERVAL 24) // will return 25-24 = 01 i.e. 2010-12-01
这在任何情况下都有效。这应该有效,根据您的要求进行调整
$today = date("Y-m", strtotime("2017-12-25"));
$dbDate = date ("Y-m-d", strtotime($today."-1"));
echo $dbDate;
将$dbDate传递给查询。只需在应用程序层中使用字符串函数查找月份的第一个日期。如果我是你,我会在代码中执行此操作,我希望将责任分开,数据库用于存储!我认为代码和数据库中的业务逻辑很难维护!我也在控制器课上做这件事。。不过谢谢你的建议……)谢谢你的回答。很好的回答:-)爆炸,内爆+str_替换,只为一个简单的用例。根据被问到的内容回答了OP的问题。我的意思是我的解决方案非常简单。只是注释你的答案,因为你的代码不容易快速理解。如果日期是另一种格式呢?您得到的输出在所有部分之间具有
-
。此外,如果询问者在其应用程序的高级别上使用此功能,可能会导致性能下降。最好的答案是最简单、最可靠的:)如果已经有了date()函数,就不需要使用strings函数
$today = date("Y-m", strtotime("2017-12-25"));
$dbDate = date ("Y-m-d", strtotime($today."-1"));
echo $dbDate;