用户输入日期范围(mm / dd / yyyy)

时间:2017-07-13 15:34:32

标签: sql sql-server

我正在使用SQL,我正在尝试创建一个允许用户输入2个日期的WHERE语句,并填充这些日期之间(包括)这些日期的所有数据。

我的代码目前 WHERE table.date BETWEEN 'StartDate' AND 'EndDate'; 但是当我尝试执行查询时,出现“从字符串转换日期和/或时间时转换失败”的错误。我还试图删除'',我收到另一个错误,上面写着“无效的列名”

如何解决这个问题,以便我可以让用户输入日期(mm / dd / yyyy)?

客户|价格|日期|项目|

修改

这是我的实际代码:

SELECT [Customer],[Price],[Date],[Items] FROM table WHERE table.date BETWEEN ‘StartDate’ AND ‘EndDate’;

1 个答案:

答案 0 :(得分:2)

如果您使用Mysql,则可以将startdate和enddate转换为字符串到日期

between str_to_date(Startdate,'%m/%d/%Y') and str_to_date(EndDate,'%m/%d/%Y')  

对于Sql server

between convert(date, Startdate) and convert(date, Enddate)

例如,如何运行所有脚本我添加了屏幕截图。假设startdate是@ str1,Enddate是@ str2

Declare @Str1 Varchar(100)='12/14/2015'
Declare @Str2 Varchar(100)='12/14/2017'

select * from #temp where CONVERT(date,dat) between convert(date,@str1)
and CONVERT(date,@str2)

输出屏幕截图: -

enter image description here