2015-10-16 78 views
2
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 

任何人都可以在MySQL中帮助我。我只想选择从9/28/201510/4/2015的日期。选择文本字段中的日期范围

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

谢谢。

+0

使用日期数据类型,而不是文字... – jarlh

+0

是您的日期存储为VARCHAR或日期? – Jens

+0

目前它是在文本中,我无法更改数据类型 –

回答

3

您可以使用STR_TO_DATE(yourdatefield, '%m/%d/%Y')将文本转换为日期,您可以稍后使用between clause来限制输出数据。

+0

编辑:请参阅:http://stackoverflow.com/questions/1908394/mysql-using-a-string-column-with-date-text-as-a-date-field – PK20

+0

谢谢你@ PK20你的推荐真的很有帮助和我设法得到答案。 SELECT'Date' as ConvDate FROM'table' WHERE STR_TO_DATE('Date','%c /%e /%Y')> = STR_TO_DATE('9/28/2015','%c /%e /% Y')AND STR_TO_DATE('Date','%c /%e /%Y')<= STR_TO_DATE('10/4/2015','%c /%e /%Y')GROUP BY date(STR_TO_DATE日期'%c /%e /%Y'))ORDER BY日期(STR_TO_DATE(日期,'%c /%e /%Y')) –

-1

之间使用,你可以在这里阅读更多:

Select data from date range between two dates

和问题是dublicate

+0

如果我的数据类型是在日期之间,使用之间没有问题。但我现在的问题是数据类型是在文本 –

+0

这只适用于日期存储在日期列中。目前还不清楚OP是否将其存储在varchar列中 – Jens

0

你可以尝试这样的:

WHERE `Date` BETWEEN CAST('9/28/2015' AS DATE) AND CAST('10/4/2015' AS DATE) 

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') 

DEMO

也尝试避免将日期存储为文本。而是使用Date数据类型来存储日期。

+0

MySQL返回空结果集(即零行) –

+0

@AlexLoh: - 更新了我的答案。请立即检查。 –

+0

显示行0 - 0(1个总计,查询花费0.0047秒。) 日期 NULL –

0

使用CONVERT首先转换您的日期,然后在您的WHERE子句中使用BETWEEN

试试这个..

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

试试这个,在where子句中使用的功能STR_TO_DATE

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') 
+0

@Alex Loh希望此解决方案可以帮助您。无需转换D b – akhilsk

0

我有同样类型的问题,但在我的情况也存储在日期中包含时间(也在文本字段中,例如2017-09-11 05:07:58 PM)。这是为WordPress的网站,但我想直接查询数据库,日期是在meta_value。 为了使这项工作我使用日期的subbstring结束后,我在的情况下发布这一点,可以帮助别人:

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';