この記事には、 smalldatetimeの変換例が含まれています 日時の値 SQLServerの値。
smalldatetime データ型には小数秒がなく、その秒コンポーネントは常にゼロ(:00)に設定されます。その精度は最も近い分です。
日時 一方、データ型には3桁の小数秒部分が含まれ、その精度は.000、.003、または.007秒の増分に丸められます。
smalldatetimeを変換するとき 日時の値 、 smalldatetime 値は日時にコピーされます 価値。分数秒は0に設定されます。
ほとんどの場合、 datetime2に変換したほうがよいでしょう。 日時ではなくデータ型 。これを行うと、同じストレージサイズを使用しながら、精度が向上します。ただし、本当に必要な場合は、日時にする必要があります。 、ここにいくつかの例があります。
例1-暗黙の変換
smalldatetime間の暗黙的な変換の例を次に示します。 および日時 。
DECLARE @thesmalldatetime smalldatetime, @thedatetime datetime; SET @thesmalldatetime = '2025-05-21 10:15:30'; SET @thedatetime = @thesmalldatetime; SELECT @thesmalldatetime AS 'smalldatetime', @thedatetime AS 'datetime';
結果:
+---------------------+-------------------------+ | smalldatetime | datetime | |---------------------+-------------------------| | 2025-05-21 10:16:00 | 2025-05-21 10:16:00.000 | +---------------------+-------------------------+
明示的に変換するために変換関数(以下のような)を使用していないため、これは暗黙的な変換です。この場合、 smalldatetime を割り当てようとすると、SQLServerはバックグラウンドで暗黙的な変換を実行します。 日時の値 変数。
この例では、 smalldatetime 値には小数秒が含まれていません。秒はゼロに設定されており、分は割り当てようとした実際の値から切り上げられています。
ただし、日時 値には、ゼロに設定された3桁の小数部分が含まれます。
例2–小数部分を変更する
小数部分がゼロに設定されていても、値を datetimeに変換すると 、小数部分(およびその場合は秒部分)を変更できるようになりました。
この例では、DATEADD()
を使用します 日時の小数秒を変更する関数 値。
DECLARE @thesmalldatetime smalldatetime, @thedatetime datetime; SET @thesmalldatetime = '2025-05-21 10:15:30'; SET @thedatetime = @thesmalldatetime; SELECT @thesmalldatetime AS 'smalldatetime', @thedatetime AS 'datetime', DATEADD(millisecond, 123, @thedatetime) AS 'datetime Modified';
結果(垂直出力を使用):
smalldatetime | 2025-05-21 10:16:00 datetime | 2025-05-21 10:16:00.000 datetime Modified | 2025-05-21 10:16:00.123
例3– CAST()を使用した明示的な変換
明示的な変換の例を次に示します。この場合、私はCAST()
を使用します SELECT
内で直接機能します smalldatetime間で明示的に変換するステートメント および日時 。
DECLARE @thesmalldatetime smalldatetime; SET @thesmalldatetime = '2025-05-21 10:15:30'; SELECT @thesmalldatetime AS 'thesmalldatetime', CAST(@thesmalldatetime AS datetime) AS 'datetime';
結果:
+---------------------+-------------------------+ | thesmalldatetime | datetime | |---------------------+-------------------------| | 2025-05-21 10:16:00 | 2025-05-21 10:16:00.000 | +---------------------+-------------------------+
例4– CONVERT()を使用した明示的な変換
CONVERT()
を使用した明示的な変換の例を次に示します。 CAST()
の代わりに関数 。
DECLARE @thesmalldatetime smalldatetime; SET @thesmalldatetime = '2025-05-21 10:15:30'; SELECT @thesmalldatetime AS 'thesmalldatetime', CONVERT(datetime, @thesmalldatetime) AS 'datetime';
結果:
+---------------------+-------------------------+ | thesmalldatetime | datetime | |---------------------+-------------------------| | 2025-05-21 10:16:00 | 2025-05-21 10:16:00.000 | +---------------------+-------------------------+
前述のように、 datetime2への変換を検討してください 日時ではなくデータ型 。これを行うと、同じストレージサイズを使用しながら、精度が向上します。