Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 间隔6个月,但用户添加了日期_Mysql_Sql - Fatal编程技术网

Mysql 间隔6个月,但用户添加了日期

Mysql 间隔6个月,但用户添加了日期,mysql,sql,Mysql,Sql,我已经搜索了一个又一个答案,但我遇到的唯一例子是使用预设的date('Y-m-d')命令的例子 我的数据库中有三个字段-月、日、年。这些字段的值是由个人而不是计算机输入的。现在,我如何确定如何不显示小于6个月的条目?您仍然可以使用日期功能。。。只需将其与mktime功能结合即可 // DATE IN IDF // WILL RETURN 2013-08-12 $date_less_6_months = date("Y-m-d", mktime(0, 0, 0, date("m") - 6, da

我已经搜索了一个又一个答案,但我遇到的唯一例子是使用预设的
date('Y-m-d')
命令的例子


我的数据库中有三个字段-月、日、年。这些字段的值是由个人而不是计算机输入的。现在,我如何确定如何不显示小于6个月的条目?

您仍然可以使用
日期
功能。。。只需将其与
mktime
功能结合即可

// DATE IN IDF
// WILL RETURN 2013-08-12
$date_less_6_months = date("Y-m-d", mktime(0, 0, 0, date("m") - 6, date("d"), date("Y")));

// DATE BROKEN APART
$year_less_6_months = date("Y", mktime(0, 0, 0, date("m") - 6, date("d"), date("Y")));
$month_less_6_months = date("m", mktime(0, 0, 0, date("m") - 6, date("d"), date("Y")));
$date_less_6_months = date("d", mktime(0, 0, 0, date("m") - 6, date("d"), date("Y")));
现在,您可以将这些值与数据库值进行比较。 检查所有日期格式

所以,也许你想检查年,月,日分开。 使用:

可能需要格式化数据库值,请使用以下SQL:

DATE_FORMAT(date,format)

将您的各个列转换并强制转换为datetime,然后将其与今天进行比较。。。像这样的东西

SELECT  *
FROM    table
WHERE   cast(CONCAT(year, '-', month, '-', day) as datetime) >= NOW() - INTERVAL 6 MONTH

假设以下内容来自您的数据库

$d = '02';
$m = '06';
$y = '2013';
从现在开始,我看不出有什么不同

$d1 = new DateTime($y.'-'.$m.'-'.$d);
$d2 = new DateTime(date("Y-m-d"));

$interval = $d2->diff($d1);

$months = $interval->format('%m months');
现在$months将包含月份的差异


您可以在这里查看

查看了所有其他示例后,这一个对我来说似乎最有意义,而且很有效。有点唯一的问题是,它只显示了不到六个月的日期。将'>'切换为'
$d = '02';
$m = '06';
$y = '2013';
$d1 = new DateTime($y.'-'.$m.'-'.$d);
$d2 = new DateTime(date("Y-m-d"));

$interval = $d2->diff($d1);

$months = $interval->format('%m months');