の違いは何ですか、それはエラーを返しはこの文が動作するこれらのSQL文
SELECT *
FROM artists
WHERE SUBSTRING(DOB, 0, 5) > '1900'
AND CONVERT(INT, DATEPART(DAYOFYEAR, DOB)) =
(SELECT CONVERT(INT, datepart(DAYOFYEAR, getdate())))
メッセージ242、レベル16、状態3、行1
varcharデータ型をdatetimeデータ型に変換すると、範囲外の値が発生しました。
この1つは今日は年
の100回目の日であることを起こる、私はなぜ、私は、SQL Serverに2008
使用しています理解していない
SELECT *
FROM artists
WHERE DOB IS NOT NULL
AND SUBSTRING(DOB, 0, 5) > '1900'
AND convert(int, DATEPART(DAYOFYEAR, DOB)) = '100'
の作品列はvarchar(10)
と設定されています。私はそこのテーブルに戻って1700年の
日付形式へ行くの日付は、私は、同じデータセットに対して一度に同じウィンドウ、ハイライトと実行1で両方のクエリを置くことができる
1930-04-10
YYYY-MM-DD
である持っています。上記の結果を得る。
'SUBSTRING(DOB、0.5)' 'DOB'は文字列ですか? – lad2025
これは[XY問題](http://xyproblem.info/)です。そして、あなたは2つの日付を比較しようとします。あなたが時間の部分をスキップしたい場合/それがユーザーの誕生日かどうかを確認するには、より簡単な方法があります。サンプルデータと希望の結果を提供してください。 – lad2025
これらは両方とも同じデータセット(Database.schema.table?)に対して実行されていると仮定できますか?エラーの性質は、DOBがデータベースが1日の年を解析できない文字列であることを示します。これは無効な形式であるためです。問合せが本当にその時点までIDENTICALなので、結論が出ると、別のデータセットに対して実行する必要があります。 – xQbert