SQL 服务器 2008

SQL Server 2008

对不起我的英语...

我有一个 table 列

project, month, year
abc      2      2017
xyz      5      2017
abc      3      2017
abc      5      2017
abc      1      2018 

如何搜索项目 abc 月 = 2 年 = 2017 直到 月 = 1 年 = 2018

据我所知,SQL Server 2008 不能使用 concat 函数

试试这个:

Select  *
From    YourTable
Where   DATETIMEFROMPARTS(year, month, 1, 1, 1, 1, 1) 
  between '2017-02-01' And '2018-01-01' 

使用数学比较:

SELECT * FROM table1
WHERE (year * 12 + month) BETWEEN (2017 * 12 + 1) AND (2018 * 12 + 1)

我已编辑代码以说明月份中的前导零。

Declare     @temp Table 
    (
        project varchar(50), 
        month   int, 
        year    int 
    );

Insert  Into    @temp 
        (project, month, year) 
Values  ('abc', 2, 2017) 

Insert  Into    @temp 
        (project, month, year) 
Values  ('xyz', 5, 2017) 

Insert  Into    @temp 
        (project, month, year) 
Values  ('abc', 3, 2017) 

Insert  Into    @temp 
        (project, month, year) 
Values  ('abc', 5, 2017) 

Insert  Into    @temp 
        (project, month, year) 
Values  ('abc', 1, 2018) 

Insert  Into    @temp 
        (project, month, year) 
Values  ('xxx', 5, 2010) 

Insert  Into    @temp 
        (project, month, year) 
Values  ('xxx', 12, 2018) 


Declare @FromYear   int = 2010;
Declare @FromMonth  int = 04;
Declare @ToYear     int = 2018; 
Declare @ToMonth    int = 05;

Select  *  
From    @temp  
Where   Convert(varchar, year) + right('00' + Convert(varchar, month), 2) Between '201004' and '201805'

How can I search project abc with month = 2 year = 2017 until month = 1 year = 2018

您可以使用

SELECT *
FROM T
WHERE (([Year] * 10) + [Month]) BETWEEN 20172 AND 20181
      AND
      project = 'abc';

Demo