が記載されていないのはなぜSQLサーバーを自動的に最新の転換日のDATETIMEのための比較的に存在しません。
-
19-09-2019 - |
質問
私は、新しい日付データ型にはSQL Server2008してしまっているんですけど比較日付フィールドへのDATETIMEの分野にリンク先サーバー(SQLでは2005年のこの場合は、このよう:
DECLARE @MyDate DATE
SET @MyDate = CONVERT(DATE, GETDATE())
SELECT *
FROM MySQL2005LinkedServer.SomeDB.dbo.SomeTable
WHERE SomeDatetimeField < @MyDate
取得しこのエラー:
OLE DB provider "SQLNCLI10" returned message "Unspecified error".
OLE DB provider "SQLNCLI10" returned message "The scale is invalid.".
"規模が無効"であるのでネイティブクライアントが通過の日時データ型のリンクサーバーなので、SQL2005されているとは思いませんが、何をすべきかは分かっています。この同じクエリに対して2008年のサーバの作品は、イブレア城、イブレア-SQLサーバーを比較することができ、DATEやDATETIMEデータ型にあります。
ここでの私の質問があることにより、ネイティブアしないと自動変換の日付の値の2009-11-09"のDATETIMEの2009-11-09 00:00:00.000いただけるよう、以前のバージョンのSQLサーバーなチョークを象徴する世界といっていい。
解決
内部構造のためのdatetime(2005)および日付/時間/datetime2datetimeoffset(2008)は非常に異なっていて、他の比較、データを配置するのと同じタイプの場合との比較.なので、ネイティブ顧客の思いを余儀なくされることになるような変換をします。
ネイティブのお客様が多いの暗黙的に変換すが、同様に、"要素の少なくとも驚き"の製品が作るべきことを投げるタイプでSQL2005年ませんのでネイティブの理解は不合格とすることが望ましい。あの微妙な誤差をできるタイムスリップからのことですよね。
同じすべき真の投datetime2(7)SQL2005年には、できると期待されていまし100ns精度の3.33msまたは捨てるとエラーでした。は誤差をできるということでしょう受け入れを明示的にキャスト製。
他のヒント
できるだけそうなんでしょうねこ 2009-11-09 00:00:00.000
なタイムゾーンニュートラルにあるこの原因により微妙なります。修正してください私について知っておきましょ間違っています。
できることを 変更セッションセットNLS_DATE_FORMAT="MM/DD/YYYY HH:MI:SS AM';このtemproray溶液の場合有はUNIXではこれらの設定ができるかを常です。ます。