Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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 选择比特定日期短的日期_Mysql_Date - Fatal编程技术网

Mysql 选择比特定日期短的日期

Mysql 选择比特定日期短的日期,mysql,date,Mysql,Date,我已经在数据库中以字符串形式存储了日期。我知道这不太好,但在我接管之前,项目已经开发了一半,并且日期以字符串形式存储,所以我继续以同样的方式 现在我想从日期大于特定日期的表中选择日期 我尝试了以下查询 SELECT * FROM dates where STR_TO_DATE(date, '%Y-%m-%d') > "2014-01-01" 但它不仅返回了更大的价值。 请帮我解决这个问题 您的日期不是YYYY-MM-DD格式。使用正确的格式 SELECT * FROM date

我已经在数据库中以字符串形式存储了日期。我知道这不太好,但在我接管之前,项目已经开发了一半,并且日期以字符串形式存储,所以我继续以同样的方式

现在我想从日期大于特定日期的表中选择日期

我尝试了以下查询

SELECT
 *
FROM
 dates 
where
 STR_TO_DATE(date, '%Y-%m-%d') > "2014-01-01" 
但它不仅返回了更大的价值。 请帮我解决这个问题


您的日期不是YYYY-MM-DD格式。使用正确的格式

SELECT *
FROM dates 
where STR_TO_DATE(date, '%m-%d-%Y') > date('2014-01-01')
如果要将日期存储为字符串,那么最好的方法是采用YYYY-MM-DD的ISO格式

您应该阅读str_to_date的文档。

日期是什么类型的?在SQL中,我更喜欢“而不是for”字符串。假设date是一个VARCHAR或文本字段,具体取决于您使用的数据库:

SELECT *
  FROM dates 
 WHERE STR_TO_DATE(date, '%Y-%m-%d') > STR_TO_DATE('2014-01-01', '%Y-%m-%d')
如果日期是真实的日期


或者您只需将其转换为数字格式的日期,'%Y%m%d'>20140101

将所有内容转换为日期即可。现在您正在比较日期和字符串。

对不起,伙计,请检查更新的演示为什么日期字符串是Hanks man,我想我们想在STR_to_date函数中提供所需的格式。谢谢您的建议。我将在将来尝试实现它STR_to_date不做日期吗?所以格式不相关?@Ben。日期可以以多种不同格式存储在字符串中,例如“2014-01-15”或“15-01-2014”或“2014年1月1日”或“2014年1月15日”。格式需要告诉函数如何进行转换。对于这个特定的问题,日期实际上可能是1月5日和6日,也可能是5月1日和6月1日,这取决于格式。@GordonLinoff Linoff在Oracle中,日期是使用格式向用户演示的日期。在MySQL中应该是相同的。将日期存储为日期并始终指定用于比较的格式有意义吗?@Ben。这里的问题是OP不是将日期存储为日期,而是存储为字符串。问题是如何正确地将字符串转换为日期。将所有内容转换为日期是一个非常庞大的过程,因为我需要根据这个过程更改所有旧代码
SELECT *
  FROM dates 
 WHERE trim(date) > STR_TO_DATE('2014-01-01', '%Y-%m-%d')