在查询mssql之间选择日期

时间:2017-04-04 16:50:35

标签: sql-server

我有疑问:

SELECT  Firma, Czas, Dzien, Opis, Kto, ID
FROM    Rok2016
WHERE   (Dzien BETWEEN @z1 AND @z2) 
AND ((@x='*' AND Firma!='')OR(@x!='*' AND Firma=@x))
AND ((@y='*' AND Kto!='')OR(@y!='*' AND Kto=@y))

z1和z2是格式日期,如DD / MM / YYYY。

显示天之间的所有记录,并且根本不考虑月份。请帮忙

2 个答案:

答案 0 :(得分:1)

对于SQL服务器:

如果要比较日期,则应使用日期(或日期时间/ 2)数据类型。

使用set dateformat dmy;来避免convert()中的格式冲突:

set dateformat dmy;

SELECT  Firma, Czas, Dzien, Opis, Kto, ID
FROM    Rok2016
WHERE   (convert(date,Dzien) BETWEEN convert(date,@z1) AND convert(date,@z2)) 
  AND ((@x='*' AND Firma!='')OR(@x!='*' AND Firma=@x))
  AND ((@y='*' AND Kto!='')OR(@y!='*' AND Kto=@y))

答案 1 :(得分:0)

将@ z1和@ z2转换为实际日期,如此

Select convert(date,'15/06/2016',103)

返回

2016-06-15

或者在你的情况下

...
Dzien BETWEEN convert(date,@z1,103) AND convert(date,@z2,103)
...