Sql server 选择查询mssql之间的日期

Sql server 选择查询mssql之间的日期,sql-server,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的格式日期 这显示所有的记录在天之间,根本不考虑月份。

我有疑问:

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的格式日期


<>这显示所有的记录在天之间,根本不考虑月份。请帮助

将@z1和@z2转换为这样的实际日期

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

2016-06-15
还是你的情况

...
Dzien BETWEEN convert(date,@z1,103) AND convert(date,@z2,103)
...
对于SQL server:

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

用于避免转换中的格式冲突:


这里您的问题是什么?可能是因为您的数据类型是字符数据而不是日期时间。如果只标记实际使用的DBMS,则会有所帮助。mysql sql server@johncapelletti设置日期格式dmy;同样有效。@JohnCappelletti^.^@JohnCappelletti如果将Dzien存储为mdy且参数为dmy,则使用样式103和convert会更好。@KrystianMoł很乐意提供帮助!
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))