この記事には、 smalldatetimeを変換する例が含まれています 日時の値 SQLServerの値。
smalldatetimeを変換するとき 日時の値 、時間と分がコピーされ、秒と小数秒が0
に設定されます。 。
例1-CAST()を使用した明示的な変換
明示的な変換の例を次に示します。この場合、私はCAST()
を使用します SELECT
内で直接機能します smalldatetimeから明示的に変換するステートメント 日時へ 。
DECLARE @thesmalldatetime smalldatetime SET @thesmalldatetime = '2031-03-25 11:15:29' SELECT @thesmalldatetime AS 'thesmalldatetime', CAST(@thesmalldatetime AS datetime) AS 'datetime';
結果:
+---------------------+-------------------------+ | thesmalldatetime | datetime | |---------------------+-------------------------| | 2031-03-25 11:15:00 | 2031-03-25 11:15:00.000 | +---------------------+-------------------------+
まず、 thesmalldatetime 値は00
を使用します 29
に明示的に設定した場合でも、秒コンポーネントの場合 。これは、 thesmalldatetimeを使用する場合 データ型の場合、秒は常にゼロです(小数秒は含まれません)。
したがって、値を datetimeに変換すると 、秒の値(および小数秒)はゼロに設定されます。元の値を日時に割り当てただけでしたか そもそも、秒はそのまま残っていたでしょう:
DECLARE @thedatetime datetime SET @thedatetime = '2031-03-25 11:15:29' SELECT @thedatetime AS 'thedatetime';
結果:
+-------------------------+ | thedatetime | |-------------------------| | 2031-03-25 11:15:29.000 | +-------------------------+
秒はそのまま残るだけでなく、秒の一部もそのまま残ります(ただし、スケール3までのみ):
DECLARE @thedatetime datetime SET @thedatetime = '2031-03-25 11:15:29.123' SELECT @thedatetime AS 'thedatetime';
結果:
+-------------------------+ | thedatetime | |-------------------------| | 2031-03-25 11:15:29.123 | +-------------------------+
例2–丸め
smalldatetime に割り当てる前に、secondsコンポーネントをより高い値に設定すると、次のようになります。 データ・タイプ。
DECLARE @thesmalldatetime smalldatetime SET @thesmalldatetime = '2031-03-25 11:15:31' SELECT @thesmalldatetime AS 'thesmalldatetime', CAST(@thesmalldatetime AS datetime) AS 'datetime';
結果:
+---------------------+-------------------------+ | thesmalldatetime | datetime | |---------------------+-------------------------| | 2031-03-25 11:16:00 | 2031-03-25 11:16:00.000 | +---------------------+-------------------------+
そのため、分コンポーネントは次の分に切り上げられます。
例3– CONVERT()を使用した明示的な変換
これは最初の例と同じですが、今回はCONVERT()
を使用します。 CAST()
の代わりに関数 。
DECLARE @thesmalldatetime smalldatetime SET @thesmalldatetime = '2031-03-25 11:15:29' SELECT @thesmalldatetime AS 'thesmalldatetime', CONVERT(datetime, @thesmalldatetime) AS 'datetime';
結果:
+---------------------+-------------------------+ | thesmalldatetime | datetime | |---------------------+-------------------------| | 2031-03-25 11:15:00 | 2031-03-25 11:15:00.000 | +---------------------+-------------------------+
例4–暗黙の変換
これは同じことを行う例ですが、暗黙的な型変換を使用しています。
DECLARE @thesmalldatetime smalldatetime, @thedatetime datetime SET @thesmalldatetime = '2031-03-25 11:15:29' SET @thedatetime = @thesmalldatetime SELECT @thesmalldatetime AS 'thesmalldatetime', @thedatetime AS 'datetime';
結果:
+---------------------+-------------------------+ | thesmalldatetime | datetime | |---------------------+-------------------------| | 2031-03-25 11:15:00 | 2031-03-25 11:15:00.000 | +---------------------+-------------------------+
したがって、明示的な変換であるか暗黙的な変換であるかに関係なく、同じ結果が得られます。
明示的に変換するために変換関数を使用していないため、これは暗黙的な変換です。あるデータ型の変数から別のデータ型の変数に値を割り当てるだけです。この場合、 smalldatetime を割り当てようとすると、SQLServerはバックグラウンドで暗黙的な変換を実行します。 日時の値 変数。