【发布时间】:2018-01-23 01:55:45
【问题描述】:
我正在尝试在范围之间选择日期。我有硬编码的日期和月份,但年份是动态连接的。我试图从表中选择这些范围之间的日期,但它并不总是给出给定范围之间的日期。
Declare @year varchar(10)
Set @year= '2017-2018'
Declare @YearFrom varchar(15)
Set @YearFrom= (Select SUBSTRING(@year, 1, 4) )
Declare @YearTo varchar(15)
Set @YearTo= (Select SUBSTRING(@year, 6, 9) )
Set @YearFrom= '01-07-'+@YearFrom
Set @YearTo= '30-06-'+@YearTo
Select Convert(varchar(11),c.RegistrationDate,106) from Contractors c
where Convert(varchar(11),c.RegistrationDate,106) between Convert(varchar(11),@yearFrom,106)
and Convert(varchar(11),@YearTo,106)
注册日期保存为:
YYYY-MM-DD 例如2017-07-03
【问题讨论】:
-
不要在 varchar 中存储日期,使用正确的数据类型!
-
有可能在那些没有给出结果的情况下
where date between date1 and date2date1大于date2?
标签: sql sql-server tsql stored-procedures sql-server-2014