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

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

    この記事には、日時の変換例が含まれています smalldatetimeの値 SQLServerの値。

    日時を変換するメリットの1つ smalldatetimeの値 これは、ストレージサイズを8バイトから4バイトに減らすことです。ただし、そうすることで精度が失われます。

    日時 データ型には、3桁の小数秒の部分が含まれます。その精度は、.000、.003、または.007秒の増分に丸められます。

    smalldatetime 一方、データ型には小数秒がなく、その秒コンポーネントは常にゼロ(:00)に設定されます。また、正確さは分単位でしかありません。

    日時を変換する場合 smalldatetimeの値 、日付と時間部分の一部がコピーされます。秒コンポーネントは(元の値に関係なく)ゼロに設定され、時間は最も近い分に丸められます。分数秒は削除されます。

    例1-暗黙の変換

    これは、日時間の暗黙的な変換の例です。 およびsmalldatetime

    DECLARE 
      @thedatetime datetime, 
      @thesmalldatetime smalldatetime;
    SET @thedatetime = '2025-05-21 10:15:30.123';
    SET @thesmalldatetime = @thedatetime;
    SELECT 
      @thedatetime AS 'datetime',
      @thesmalldatetime AS 'smalldatetime';
    

    結果:

    +-------------------------+---------------------+
    | datetime                | smalldatetime       |
    |-------------------------+---------------------|
    | 2025-05-21 10:15:30.123 | 2025-05-21 10:16:00 |
    +-------------------------+---------------------+
    

    明示的に変換するために変換関数(以下のような)を使用していないため、これは暗黙的な変換です。この場合、 datetime を割り当てようとすると、SQLServerはバックグラウンドで暗黙的な変換を実行します。 smalldatetimeの値 変数。

    この例では、 smalldatetime 値には小数秒が含まれず、秒はゼロに設定され、分は切り上げられています。

    例2– CAST()を使用した明示的な変換

    明示的な変換の例を次に示します。この場合、私はCAST()を使用します SELECT内で直接機能します 日時間で明示的に変換するステートメント およびsmalldatetime

    DECLARE @thedatetime datetime;
    SET @thedatetime = '2025-05-21 10:15:30.125';
    SELECT 
      @thedatetime AS 'datetime',
      CAST(@thedatetime AS smalldatetime) AS 'smalldatetime';
    

    結果:

    +-------------------------+---------------------+
    | datetime                | smalldatetime       |
    |-------------------------+---------------------|
    | 2025-05-21 10:15:30.127 | 2025-05-21 10:16:00 |
    +-------------------------+---------------------+
    

    この例では、初期値を@thedatetimeに割り当てるときに秒の小数部を変更したことに気付いたかもしれません。 。ただし、日時に割り当てているためです。 データ型の場合、秒の小数部は切り上げられます(精度が.000、.003、または.007秒の増分に切り上げられるため)。この場合、125の秒数を割り当てようとします ただし、127に切り上げられます 。

    ただし、これは smalldatetimeには影響しません。 値。

    例3– CONVERT()を使用した明示的な変換

    CONVERT()を使用した明示的な変換の例を次に示します。 CAST()の代わりに関数 。

    DECLARE @thedatetime datetime;
    SET @thedatetime = '2025-05-21 10:15:30.125';
    SELECT 
      @thedatetime AS 'datetime',
      CONVERT(smalldatetime, @thedatetime) AS 'smalldatetime';
    

    結果:

    +-------------------------+---------------------+
    | datetime                | smalldatetime       |
    |-------------------------+---------------------|
    | 2025-05-21 10:15:30.127 | 2025-05-21 10:16:00 |
    +-------------------------+---------------------+
    

    1. MySQLテーブルの最大行数を設定するにはどうすればよいですか?

    2. mysqli_real_escape_stringは、SQLインジェクションやその他のSQL攻撃を回避するのに十分ですか?

    3. SQL Server:MAX(DATE)の行のみを選択します

    4. SQL ServerでのROW_NUMBER()のしくみ