2017-10-19 115 views
2

我有一個表中的日期格式爲字符串在下面的方式YYYY-MM-DD。 數據包含若干年的數據,我想拉就在當年使用下面的查詢:SQL Server - 其中Like語句的變量返回沒有結果

Declare @currentYear VARCHAR(5) 
Select @currentYear = year(getdate()) 

select * 
from tablename 
where datefixed like @currentYear 

上面的查詢沒有返回任何結果。 我試過以下線程中列出的方法:Using variable in SQL LIKE statement

我錯過了一些東西,但我不能把手指放在上面。

+0

您試圖在日期中使用like like for strings命令嘗試在startdate和endDate之間使用 – RegBes

+3

我們應該停止回答問題,其中OP要求幫助解決查詢級別的混亂數據庫設計問題。也許他們首先會開始使用正確的類型。通常情況下,查詢將很簡單:'WHERE YEAR(datefixed)= YEAR(GETDATE())' –

+0

謝謝@TimSchmelter。我們的新設計使用yyyymmdd,它允許使用簡單的語句和簡單的語句。 –

回答

3

你忘了尾隨通配符%

select * 
from tablename 
where datefixed like @currentYear + '%' 
+0

我很感激幫助。這似乎拉正確。 –

2

您可以使用這樣的:如果你想要一個像運營商使用,您必須確保datefixed

Declare @currentYear int 
Select @currentYear = year(getdate()) 

select * 
from tablename 
where year(convert(datetime,replace(datefixed,'-',''))) = @currentYear 

是一個字符串類型( varchar,char等)並添加通配符(%)

+0

他存儲的字符串不是日期時間 –

+0

由於格式爲'YYYY-MM-DD'可能會引發異常 –

+0

完美@MelgoV,這也適用。我們目前正在使用yyyymmdd,這很容易處理。 –