当前位置: 首页 > 面试题库 >

mysql:搜索存储为varchar的日期之间

王楚青
2023-03-14
问题内容

我想要 select * from table where dates between (some_date and another_date)

问题是日期存储为varchar

这是我有约会的例子:

7/29/2010 9:53 AM
7/16/2010 7:57:39 AM

请注意,有些记录有几秒钟,有些则没有

我根本不在乎时间,我只需要日期

reporttimedate领域

这是行不通的:

SELECT * FROM batchinfo 
 where cast(reporttime as date) between ('7/28/10' and '7/29/10')

这:

SELECT * from batchinfo WHERE reporttime BETWEEN STR_TO_DATE(7/28/2010, '%m/%/d/%Y %h:%i:%s %p')
                AND STR_TO_DATE(7/29/2010, '%m/%/d/%Y %h:%i:%s %p')

正在返回:

Truncated incorrect datetime value: '7/8/2010 11:47 AM'
Incorrect datetime value: '0.00012009' for function str_to_date

这:

SELECT * from batchinfo WHERE STR_TO_DATE(reporttime, '%m/%/d/%Y %h:%i:%s %p') BETWEEN STR_TO_DATE(7/28/2010, '%m/%/d/%Y')
                                                           AND STR_TO_DATE(7/29/2010, '%m/%/d/%Y')

正在返回:

Incorrect datetime value: '7/8/2010 11:47 AM' for function str_to_date

OMG小马:

我把所有东西都放在第一个空格之前:

SELECT * from batchinfo WHERE STR_TO_DATE(LEFT(reporttime,LOCATE(' ',reporttime)), '%m/%/d/%Y') BETWEEN STR_TO_DATE(7/28/2010, '%m/%/d/%Y')
                                                           AND STR_TO_DATE(7/29/2010, '%m/%/d/%Y')

现在我得到这个返回:

Incorrect datetime value: '7/8/2010' for function str_to_date

问题答案:

您想在日期之间进行搜索,并将其存储为日期。通过将它们存储为字符串,您就可以自己射击。您基本上需要从字符串中提取日期部分(使用SUBSTR()LEFT())并将其解析为日期格式(使用STR_TO_DATE())。

这种解决方案的性能将令人赞叹。

STR_TO_DATE(LEFT(reporttime,LOCATE(' ',reporttime)),'%m/%d/%Y') BETWEEN '2010-07-28' AND '2010-07-29'



 类似资料:
  • 问题内容: 我需要将1/9/2011的varchar值转换为mySQL中的日期,并且只需要月份和年份。这样我就可以使用该功能(因此,我需要将以上内容转换为201101)。 我已经尝试过使用函数的各种方式: 但是我得到了奇怪的结果…(例如:2009-01-00) 我做错了什么? 问题答案: 要么 很难从你的例子中看出

  • 我尝试创建一个查询,显示入住和退房日期之间的可用酒店。此外,当我为特定房间预订时,我将他们的预订列设置为1。这意味着,在现实生活中,当结账日期到来时,触发函数将该预订列设置成0。 如果酒店的所有房间都已预订(预订=1),并且这些房间的签入-退房日期是特定日期(签入-退房输入),则不要将该酒店放在列表中。我的查询不会显示我想要的结果。 查询:输入:国家(状态)、签入和签出。 当我运行查询时,它总是显

  • 问题内容: 我想知道如何使用Range-Query在Hibernate Search中按日期进行搜索,还是我必须实现任何过滤器?以下是我在Record Entity中的字段 我的要求是找到两个日期之间分析的记录,例如。2011年11月11日至2012年11月11日。我很困惑如何执行此操作。 问题答案: 您应该使用 从 和 到 的范围查询。 因为您使用 DateTools 自己创建了基于字符串的搜索

  • 问题内容: 我有一个数据库(表),其中2个字段是: 日期以这种方式存储: 例如:数据库中的“ 2014-10-30 10:10:10”。 现在我想比较两个日期并使用查询2014-09-10 10:10:10()到2014-10-10 10:10:10()从数据库中获取记录 如何获取所有准确的记录..有什么解决方案.. 谢谢。 问题答案: 只需比较字符串即可,无需额外的开销。 此格式为“YYYY-M

  • 问题内容: 全部, 我有一个带有称为时间戳记的列的MYSQL表。它的数据类型为“ 10/1/2009 3:25:08 PM”,“ 10/1/2009 3:30:05 PM”,“ 10/4/2009 3:40:01 PM”,等等.. 我想编写一个SQL查询来选择在两个日期之间出现的时间戳字段中的所有值。 userInput日期将没有时间部分。您能为此建议正确的MySQL查询语法吗?谢谢 问题答案:

  • 问题内容: 已修正-这是我现在所拥有的 -用ASP编写 原始问题: 简单的问题,但由于某种原因,我似乎无法正常工作。 我有一个搜索框,旁边是日期范围选择菜单,因此用户可以搜索最近1个月,6个月或12个月内的照片。 我所拥有的没有错误,但是当它应该执行时它不会产生任何结果,就是这样: SQL输出产生以下结果: 数据库的’dateCreated’字段设置为(Date INDEX)。 谁能看到哪里出了问