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

Mysql 在文本字段中选择日期范围

Mysql 在文本字段中选择日期范围,mysql,sql,Mysql,Sql,有人能在MySQL中帮助我吗。我只想选择从2015年9月28日至2015年4月10日的日期 请注意,此日期在文本字段中 谢谢。在之间使用,您可以在此处阅读更多内容: 问题很简单您可以这样尝试: Date 9/25/2015 9/26/2015 9/27/2015 9/28/2015 9/29/2015 9/30/2015 10/1/2015 10/2/2015 10/3/2015 10/4/2015

有人能在MySQL中帮助我吗。我只想选择从2015年9月28日至2015年4月10日的日期

请注意,此日期在文本字段中


谢谢。

在之间使用,您可以在此处阅读更多内容:

问题很简单

您可以这样尝试:

   Date

    9/25/2015
    9/26/2015
    9/27/2015
    9/28/2015
    9/29/2015
    9/30/2015
    10/1/2015
    10/2/2015
    10/3/2015
    10/4/2015
    10/5/2015


同时尽量避免将日期存储为文本。改为使用日期数据类型来存储日期。

您可以使用
STR_to_Date(您的日期字段,'%m/%d/%Y')
将文本转换为日期,以后可以使用between子句来限制输出数据。

首先使用
convert
转换日期,然后在
WHERE
子句中使用
between

试试这个

WHERE STR_TO_DATE(`Date`, '%m/%d/%Y') BETWEEN STR_TO_DATE('9/28/2015', '%m/%d/%Y') AND STR_TO_DATE('10/4/2015', '%m/%d/%Y')

试试这个,在where子句中使用函数str_to_date

    SELECT * FROM TableName 
    WHERE Date BETWEEN CONVERT(DATE,'9/28/2015') AND CONVERT(DATE,'10/4/2015')

我有相同类型的问题,但在我的情况下,存储的日期也包含时间(也在文本字段中,例如2017-09-11 05:07:58 PM)。这是一个wordpress网站,但我想直接查询数据库,日期是一个meta_值。 为了完成这项工作,我使用日期子字符串结束,我发布了以下内容,以防对某人有所帮助:

SELECT `dateVal`,`id` 
 FROM `datecheck` 
  WHERE STR_TO_DATE(`dateVal`,'%m/%d/%Y') between STR_TO_DATE('9/28/2015',
 '%m/%d/%Y') AND STR_TO_DATE('10/4/2015', '%m/%d/%Y')

使用日期数据类型,而不是文本…您的日期存储为varchar还是date?当前它是文本,我无法更改数据类型是。不要使用字符串数据类型如果我的数据类型是date,在两者之间使用没有问题。但我现在的问题是数据类型是文本的,这只适用于日期存储在日期列中的情况。不清楚OP是否将其存储在varchar列中MySQL返回了一个空结果集(即零行)@AlexLoh:-更新了我的答案。请立即检查。显示第0-0行(共1行,查询耗时0.0047秒)日期NULL@AlexLoh:-试试这个:
select*from test WHERE STR_TO_DATE(
DATE
,'%m/%d/%Y')介于STR_TO_DATE('9/28/2015','%m/%d/%Y')和STR_TO_DATE('10/4/2015','%m/%d/%Y')之间的工作演示:我知道你为我推荐了一个最佳方案,但在这个时候我不能改变桌子。不管怎么说,你的善意回应确实有助于我解决这个问题。再次非常感谢。:)编辑:参考:谢谢@PK20你的参考真的很有帮助,我设法得到了答案。从
表中选择
Date
作为ConvDate,其中STR_TO_Date(
Date
,'%c/%e/%Y')>=STR_TO_Date('9/28/2015','%c/%e/%Y')和STR_TO_Date(
Date
,'%c/%e/%Y')。Alex Loh希望此解决方案对您有所帮助。无需转换db中的值
SELECT `dateVal`,`id` 
 FROM `datecheck` 
  WHERE STR_TO_DATE(`dateVal`,'%m/%d/%Y') between STR_TO_DATE('9/28/2015',
 '%m/%d/%Y') AND STR_TO_DATE('10/4/2015', '%m/%d/%Y')
SELECT ID, display_name, user_email, meta_value FROM bfge_users, bfge_usermeta WHERE (bfge_users.ID = bfge_usermeta.user_id) AND meta_key ='user_login' AND CAST(SUBSTR(meta_value,1,POSITION(' ' IN meta_value)) AS DATE) between '2017-09-11' AND '2017-09-13';