私はここではむしろ奇妙な問題があります。私は変数を組み込むために自分で部分的に作成した日付文字列を持っています。問題は、別の言語設定を設定していることです。この場合、言語設定形式に合わせて文字列を変換する必要があります。私はこのコードを使用しています:日付形式の変換がSQL Serverの自己作成日付文字列に反映されない
cast(convert(varchar, cast(cast(getdate() as date) as varchar) + ' ' + RIGHT('0' + CAST(@HR as varchar), 2) + ':00:00.000', 120) as datetime)
を私はエラーを取得する「datetimeデータ型にvarcharデータ型の変換は範囲外の値になった。」、あなたは間違って割り当てた場合、正常ですキャストする前の日付形式。
私が個人的に作成した日付文字列を変換しようとすると、設定したフォーマットコードに関係なくフォーマットが変更されないという問題があります。数字をハードコードしても変更されません。私の変数:00::2016年9月14日02で
convert(varchar, cast(cast(getdate() as date) as varchar) + ' 0' + CAST(2 as varchar) + ':00:00.000', 101)
結果00.000
例えば、2016年9月14日で
convert(varchar, dateadd(Hour, 2, getdate()), 101) as datetime
結果。
私は別の言語設定をしていますが、SQLサーバーは標準形式の日付形式を常に認識しているとは限りませんか?
私はこの問題を克服するためにアドバイスをしてください。
ありがとうございます!
PS:ブルガリア語を設定する前に、変換されたdatetime列を変数に挿入することで問題を解決することができました。私はまだ問題の原因を知ることに非常に興味があります。
'DBCC USEROPTIONS'を使用すると、データベースが使用している日付形式を確認できます。以前に設定されていなかった場合は、言語を変更すると変更されます。しかし、 'SET DATEFORMAT DMY'のようにdateformatを設定すると、言語を変更するとdateformatは同じままになります。詳細については、以下を参照してください。https://msdn.microsoft.com/de-de/library/ms189491.aspx – Nebi
ありがとうございます。これは私の目標(私はそれをすでに解決した)を実現するのに役立ちますが、それでも私の質問に答えることはできません。 – GeorgiG
あなたはそうです、これはあなたの質問に対する答えではありませんでした。しかし、多分私の答えは少し質問に役立つです。 'CONVERT'の内部のデータ型のためです。 – Nebi