Mysql 在文本字段中选择日期范围
有人能在MySQL中帮助我吗。我只想选择从2015年9月28日至2015年4月10日的日期 请注意,此日期在文本字段中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
谢谢。在之间使用,您可以在此处阅读更多内容: 问题很简单您可以这样尝试:
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';