私はSQLに比較的慣れていないので、これがばかげた質問である場合はご容赦ください。私はこれを機能させるために長い間努力してきました。
テーブルAに、ConstructionYearというフロート列の列があります。単純な4桁の年(つまり、2010、2005、1972など)が入力されます。これらの年を使用して、テーブルBのYearBuilt日時フィールドにデータを入力する必要があります。オンラインで見つけたconvert()とcast()のさまざまな組み合わせを検索して検索して試しましたが、機能していません。
私がしたいのはこれです:
'2008'-> '2008-01-01 00:00:00.000'
'2005'-> '2005-01-01 00:00:00.000'
'1986'-> '1986-01-01 00:00:00.000'
現在起こっていることの代わりに(を使用してCAST(ConstructionYear AS DATETIME)
):
'2008'-> '1905-07-02 00:00:00.000'
'2010'-> '1905-07-04 00:00:00.000'
'1984'-> '1905-06-08 00:00:00.000'
編集:解決策:cast(convert(varchar,@ConstructionYear) AS DATETIME)
したがって、私の問題には2つの主な原因がありました(SQLを初めて使用する以外)。
SQLServerが日時に使用する1900年の時代については知りませんでした。私が見た1905年のすべての日時のせいで何かが起こっていることはわかりましたが、それが私の2005年を取り、1900年からの日数として数えていることを知りませんでした。
1753年。なぜ1753年が私たちが使用できる最も早い年なのですか?ここに質問を投稿する前のある時点で、おそらく正しい構文を使用していましたが、1753年より前のデータがあったため、実行されませんでした。エラーはコードにあると思いました。