2010-12-27 3 views
0

datetimeの列を変換する際に問題があり、getdateに変換する必要があります。datetimeからgetdateへの変換

たとえば、列A(datetime、null)で、その列にはgetdateで正しい値が含まれており、値によっては '1900-01-01 15:32:00.000'のようなものがあります。私は値を通常のgetdate値に変更する際に助けが必要です。また、その列の一部のフィールドにもNULLSがあります。あなたはそれが毎回異なるようにしたい場合は、事前に

おかげで、 Shashra

+0

1900-01-01 15 :実際には32:00.000? GetDate()は、システムに応じて現在の日付/時刻を返す非決定的な関数です。 – JoshBerke

+0

"Getdate"は、フォーマットまたはデータ型の名前ではなく、呼び出されるたびに呼び出された時刻を返す関数の名前です。では、「getdateに変換する」とはどういう意味ですか? –

+0

あなたは正確に何をしようとしていますか? '1900-01-01'の日付を現在の日付と時刻に設定しますか? 'NULLS'と他の日付を無視しますか? – codingbadger

答えて

1

いくつかのこと:

のGetDate()は、現在の日付と時刻を返す関数であるはい、それは現在の時刻を含む

たとえば、あなたは(「純粋な」時間のようなルックスを提供。つまり、利用可能な日付コンポーネントはありません)。それが実際のデータであれば、どういうわけか、そのフィールドに記録された0。####という形式の10進値を取得しています。もちろん、その日からの実際のデータを持つことができます。または、この質問の例を作成したばかりかもしれません。

最後に、あなたが本当に望むのは、あなたが純粋な日付を持つように時間コンポーネントを取り除くことです。変換(datetime、convert(nvarchar(50)、getdate()、101))を試してください。内部変換は、mm/dd/yyyyの形式でテキストを作成し、外側の変換ターンをyyyy-mm-ddという形式の日付に戻します。00:00:00.000

1
  • あなたは)GETDATE(の出力を保存しないでしょう。 あなたはこのような「先月に何かがOKである」としてarbritrary条件を持たずに「偽」の値から「本物」vakesを区別する安全な方法はありませんSELECT col1, col1, GETDATE() AS Now FROM Mytable...

  • やると思います。 "1900-01-01 15:32:00.000" は、「平均値を無視した場合、有効なdatetime値

ある場合のみ時間ビット、ない日(1900年1月1日)、その後何について:

SELECT 
    col1, col2, 
    CASE WHEN DateTimeCol <> '1900-01-01 15:32:00.000' THEN DateTimeCol ELSE GETDATE() END, 
    CASE WHEN DateTimeCol > '1901-01-01' THEN DateTimeCol ELSE GETDATE() END, 
    ... 
関連する問題