Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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_Sql_Date_Between - Fatal编程技术网

在MySQL中获取两个日期字符串之间的数据

在MySQL中获取两个日期字符串之间的数据,mysql,sql,date,between,Mysql,Sql,Date,Between,我一直在为我正在处理的一个项目记录Twitter数据,日期信息保存为2011年7月14日星期四06:21:48+0000,保存在字符串字段中 如何使用mySQL选择介于两个日期之间的数据?我可以获取大于某个值或小于某个值但不在值之间的数据 例如,数据是: Thu, 14 Jul 2011 06:21:48 +0000 Thu, 14 Jul 2011 12:18:21 +0000 Thu, 14 Jul 2011 18:48:00 +0000 Thu, 14 Jul 2011 23:48:02

我一直在为我正在处理的一个项目记录Twitter数据,日期信息保存为2011年7月14日星期四06:21:48+0000,保存在字符串字段中

如何使用mySQL选择介于两个日期之间的数据?我可以获取大于某个值或小于某个值但不在值之间的数据

例如,数据是:

Thu, 14 Jul 2011 06:21:48 +0000
Thu, 14 Jul 2011 12:18:21 +0000
Thu, 14 Jul 2011 18:48:00 +0000
Thu, 14 Jul 2011 23:48:02 +0000
Fri, 15 Jul 2011 06:48:10 +0000
Fri, 15 Jul 2011 12:48:00 +0000
Fri, 15 Jul 2011 18:43:32 +0000
Fri, 15 Jul 2011 23:44:08 +0000
Sat, 16 Jul 2011 06:47:08 +0000
Sat, 16 Jul 2011 12:46:49 +0000
Sat, 16 Jul 2011 18:45:41 +0000
Sat, 16 Jul 2011 23:41:27 +0000
我的SQL字符串是:

SELECT * 
FROM twitter 
WHERE SUBSTR(twitter_date, 6, 11) >= '2011-06-15' 
AND SUBSTR(twitter_date, 6, 11) <= '2011-06-21'
选择*
来自推特
其中SUBSTR(twitter_date,6,11)>=“2011-06-15”

和SUBSTR(twitter_date,6,11)您可能需要查看MySQLs
STR_to_date
函数。这将为您提供一个日期和间隔,该日期和间隔应按预期工作。

查询将失败。你在比较两个字符串,而不是日期。您需要明确地告诉MySQL您希望将字符串视为日期。因为它是日期信息,所以可以将其存储在MySQL中的日期或日期时间字段类型中,这样就省去了所有这些麻烦:

SELECT STR_TO_DATE(SUBSTR(twitter_date, 6, 11)) >= '2011-06-15' ...

强制左侧为正确的日期值将向MySQL提示,它应该将右侧也视为日期。

不能使用between,因为它们是字符串而不是实际的日期字段。如果您知道日期的格式将始终相同,则可以执行以下操作:

您将“2011年7月6日”与2011年6月15日进行比较

应该是

SELECT * 
FROM twitter 
WHERE SUBSTR(twitter_date, 6, 11) >= '6 Jul 2011' 
AND SUBSTR(twitter_date, 6, 11) <= '21 Jul 2011'
选择*
来自推特
其中SUBSTR(twitter_date,6,11)>=“2011年7月6日”
和SUBSTR(twitter_date,6,11)
一旦您更改了表以将日期数据保存在适当的日期时间字段中,您可能希望参考我对以下有关日期的问题的回答并对其进行筛选,这可能会很有用

例如,在上面的查询/数据中,如果查询的某个日期没有数据,会发生什么情况?如果你使用我在附加问题中描述的技术,你可以获得额外的信息,以及其他有用的信息,如星期几、月份名称等


希望有帮助

>使用<代码> > <代码>关键字之间的“可能的副本”。@创世记,这不是复制品,为了将来的明智而仔细查看,您可能希望修改您的表来记录<代码> Twitter LyDATE < /Case>列,作为实际的<代码>时间戳< /代码>列。
SELECT * 
FROM twitter 
WHERE SUBSTR(twitter_date, 6, 11) >= '6 Jul 2011' 
AND SUBSTR(twitter_date, 6, 11) <= '21 Jul 2011'