sql >> データベース >  >> RDS >> Sqlserver

SQL Serverで「smalldatetime」を「datetime」に変換する(T-SQLの例)

    この記事には、 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への変換を検討してください 日時ではなくデータ型 。これを行うと、同じストレージサイズを使用しながら、精度が向上します。


    1. SQL Serverの削除ステートメント:テーブルから1つまたは複数の行を削除する方法

    2. SQLクエリを高速化する方法

    3. PostgreSQLのORDERBY句でALIASを使用するにはどうすればよいですか?

    4. SQLServerのScalarUDFとは何ですか?