如何在SQL查询中连接年,月和日?

时间:2019-02-15 15:54:19

标签: sql sql-server crystal-reports crystal-reports-2008 crystal-reports-2010

如何在查询的where子句中将年,月和日连接起来?

我试图这样做,但是它带来了错误消息,varchar数据类型到datetime数据类型的转换导致值超出范围。 SQL状态:22007

Select * 
from table_name 
where DocDate >= cast(YEAR({?dateto}) as varchar(4)) + '-02-' + cast(DAY({?dateto}) as varchar(2))

请任何人都可以帮助我

1 个答案:

答案 0 :(得分:0)

您为什么要这么做?只需使用datefromparts()

where docdate >= datefromparts(YEAR({?dateto}), 2, DAY({?dateto}))

当然,二月只有28或29天,因此您可能需要考虑到这一点:

where docdate >= datefromparts(YEAR({?dateto}), 2,
                               (CASE WHEN DAY({?dateto}) > 28 THEN 28 ELSE DAY({?dateto}) END)
                              )