SQL查询(查找存储为字符串的日期范围)

时间:2017-07-19 19:17:22

标签: mysql sql database date

我目前正在使用数据库,其中日期以(DD / MM / YYYY)格式存储为字符串。

我目前正在尝试查找一系列日期,即(2017年7月15日至2017年7月26日),然后填写每周列表。

我遇到的问题因为这些值在SQL中存储为字符串我无法选择范围,除非我指定了值。

我想知道是否有任何可以帮助我的SQL Wizards。

谢谢, 乔

2 个答案:

答案 0 :(得分:3)

你可以在和str_to_date之间使用,例如:

 select * 
 from my_table 
 where str_to_date(my__date_column, '%d/%m/%Y')
     between str_to_date('15/07/2017', '%d/%m/%Y') 
      and str_to_date('26/07/2017', '%d/%m/%Y') 

答案 1 :(得分:-2)

Hello Everyone我修改了我的答案,因为前一个答案是错误的,对其他用户没有帮助。简而言之,我不得不将日期更改为在SQL中正确存储为日期。总之,不幸的是没有捷径。

这是我使用的SQL查询(没有SQL注入保护),我希望这是有帮助的

"SELECT * FROM placement WHERE ('" + StartDate.ToString("yyyy-MM-dd") + "' 
between StartDate and EndDate OR '" + EndDate.ToString("yyyy-MM-dd") + "' 
between StartDate and EndDate or StartDate = '" + StartDate.ToString("yyyy-
MM-dd") + "' or EndDate = '" + StartDate.ToString("yyyy-MM-dd") + "' or 
StartDate = '" + EndDate.ToString("yyyy-MM-dd") + "' or EndDate = '" + 
EndDate.ToString("yyyy-MM-dd") + "') AND YearGroup = '" + 
User.IntakeYear.ToString() + "' AND Cohort = '" + User.Cohort.ToString() + 
"';";

感谢您的反馈。