Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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 SYSDATE和以MM-DD格式存储的日期之间的日期差异_Mysql_Sql_Date - Fatal编程技术网

Mysql SYSDATE和以MM-DD格式存储的日期之间的日期差异

Mysql SYSDATE和以MM-DD格式存储的日期之间的日期差异,mysql,sql,date,Mysql,Sql,Date,我正在建立一个简单的提醒系统,并使用MySQL表来存储日期 我需要为提醒日期存储的关键内容是每月的哪一天和哪一天 但是,用户必须从DatePicker字段中选择值,如下所示: 因此,如果用户希望提醒日期为9月2日,则该日期将以YYYY-MM-DD格式存储在数据库的“日期”字段中,如2014-09-02 我遇到的问题是计算出下个月的截止日期 这是我的示例表: CREATE TABLE `test_table` ( `fldID` int(11) NOT NULL AUTO_INCREMENT

我正在建立一个简单的提醒系统,并使用MySQL表来存储日期

我需要为提醒日期存储的关键内容是每月的哪一天和哪一天

但是,用户必须从DatePicker字段中选择值,如下所示:

因此,如果用户希望提醒日期为9月2日,则该日期将以YYYY-MM-DD格式存储在数据库的“日期”字段中,如2014-09-02

我遇到的问题是计算出下个月的截止日期

这是我的示例表:

CREATE TABLE `test_table` (
  `fldID` int(11) NOT NULL AUTO_INCREMENT,
  `fldDate` date DEFAULT NULL,
  `fldDateVarChar` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`fldID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
一些示例数据:

insert  into `test_table`(`fldID`,`fldDate`,`fldDateVarChar`) values (1,'2014-08-28','08-28');
insert  into `test_table`(`fldID`,`fldDate`,`fldDateVarChar`) values (2,'2016-10-09','10-09');
insert  into `test_table`(`fldID`,`fldDate`,`fldDateVarChar`) values (3,'2014-01-23','01-23');
insert  into `test_table`(`fldID`,`fldDate`,`fldDateVarChar`) values (4,'2015-09-18','09-18');
样本数据:

fldID   fldDate     fldDateVarChar
------------------------------------------
1       2014-08-28  08-28
2       2016-10-09  10-09
3       2014-01-23  01-23
4       2015-09-18  09-18
期望输出:

fldID   TODAYS_DATE     CalcDate     Difference
--------------------------------------------------------------------
1       2014-08-23      2014-08-28   -5 
2       2014-08-23      2014-10-09   -47
3       2014-08-23      2014-01-23   212
4       2014-08-23      2014-09-18   -26
对于上述内容,第1行和第4行是相关的/有用的,因为到期日在下个月内

用户使用日期选择器拾取数据。我只对月份和日期感兴趣。这一年并不重要

我还将MM-DD值存储在VARCHAR字段中,以备需要

我想编写一个SQL语句来计算SYSDATE(或NOW())和用户提醒日期的MM-DD部分之间的天数差

如果不在用户的提醒日期后加上年份,我就不能使用DATEDIFF

e、 g.对于“08-28”的MM-DD值,我需要如下内容:

从DUAL中选择DATEDIFF(现在(),'2014-08-28')

但如果我在一年内运行它,它需要:

从DUAL中选择DATEDIFF(现在(),'2015-08-28')

这就是我遇到的问题


我可以在MySQL中实现这一点吗?

也许这对您有用:

SELECT fldID,
 DATE_FORMAT(NOW(), '%Y-%m-%d') AS TODAYS_DATE,
 concat(year(now()),'-',fldDateVarChar) AS CalcDate,
 DATEDIFF(NOW(), concat(year(now()),'-',fldDateVarChar)) AS Difference
FROM test_table

在此处测试:

您能提供一些示例数据和所需的输出吗?我理解这个问题,但不是你特别想要的。嗨,我已经更新了这个问题,包括样本表、数据和期望的输出,以防有帮助。