2017-10-19 17 views
2

私は、日付がYYYY-MM-DDの文字列としてフォーマットされたテーブルを持っています。 データは、データの価値は数年が含まれていて、私は次のクエリを使用して、ちょうど現在の年引っ張るしたいと思います:SQL Server - 変数が返されていない変数の結果が返される

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

select * 
from tablename 
where datefixed like @currentYear 

上記のクエリは結果を返していません。 私はこのスレッドで概説された方法論に従ってみました:Using variable in SQL LIKE statement

私は何かが欠けていますが、私はそれに私の指を置くことはできません。

+0

日付の文字列のように使用しようとしています。startdateとendDateの間で使用してみてください – RegBes

+3

OPが質問レベルで自分の面倒なデータベース設計を修正するための助けを求めているところで、質問に答えないでください。たぶん、彼らは最初に正しいタイプを使い始めるでしょう。通常はクエリは簡単です: 'WHERE YEAR(datefixed)= YEAR(GETDATE())' –

+0

@TimSchmelterありがとうございます。私たちの新しいデザインでは、yyyymmddを使用しています.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を使用しています.yyyymmddは作業がずっと簡単です。 –

関連する問題