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

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

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

    日付を変換するとき 日時の値 、値に追加情報が追加されます。これは、日時が原因です データ型には、日付と時刻の両方の情報が含まれます。 日付 一方、データ型には日付情報のみが含まれます。

    例1-暗黙の変換

    日付間の暗黙的な変換の例を次に示します。 および日時

    DECLARE @thedate date, @thedatetime datetime
    SET @thedate = '2020-12-01'
    SET @thedatetime = @thedate
    SELECT 
      @thedate AS 'date',
      @thedatetime AS 'datetime';
    

    結果:

    +------------+-------------------------+
    | date       | datetime                |
    |------------+-------------------------|
    | 2020-12-01 | 2020-12-01 00:00:00.000 |
    +------------+-------------------------+
    

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

    日付がわかります 変数には日付情報のみが含まれますが、 datetime 変数には、日付と時刻の両方の情報が含まれます。

    日付の間で変換する場合 および日時 、時間コンポーネントは00:00:00.000に設定されます 。これは、日付の値に時刻情報が含まれていないため、SQL Serverが必要な時刻(存在する場合)を知る方法がないためです。

    例2–時間を変更する

    時刻を変更する必要がある場合(ただし、同じ日付を維持する必要がある場合)は、DATEADD()を使用できます。 まさにそれを行うための機能。

    DECLARE @thedate date, @thedatetime datetime
    SET @thedate = '2020-12-01'
    SET @thedatetime = @thedate
    SET @thedatetime = DATEADD(hour, 8, @thedatetime)
    SELECT 
      @thedate AS 'date',
      @thedatetime AS 'datetime';
    

    結果:

    +------------+-------------------------+
    | date       | datetime                |
    |------------+-------------------------|
    | 2020-12-01 | 2020-12-01 08:00:00.000 |
    +------------+-------------------------+
    

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

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

    DECLARE @thedate date
    SET @thedate = '2020-12-01'
    SELECT 
      @thedate AS 'date',
      CAST(@thedate AS datetime) AS 'datetime';
    

    結果:

    +------------+-------------------------+
    | date       | datetime                |
    |------------+-------------------------|
    | 2020-12-01 | 2020-12-01 00:00:00.000 |
    +------------+-------------------------+
    

    したがって、暗黙の変換と同じ結果が得られます。

    次のように時間を調整することもできます:

    DECLARE @thedate date
    SET @thedate = '2020-12-01'
    SELECT 
      @thedate AS 'date',
      DATEADD(hour, 8, CAST(@thedate AS datetime)) AS 'datetime';
    

    結果:

    +------------+-------------------------+
    | date       | datetime                |
    |------------+-------------------------|
    | 2020-12-01 | 2020-12-01 08:00:00.000 |
    +------------+-------------------------+
    

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

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

    DECLARE @thedate date
    SET @thedate = '2020-12-01'
    SELECT 
      @thedate AS 'date',
      CONVERT(datetime, @thedate) AS 'datetime';
    

    結果:

    +------------+-------------------------+
    | date       | datetime                |
    |------------+-------------------------|
    | 2020-12-01 | 2020-12-01 00:00:00.000 |
    +------------+-------------------------+
    

    そして時間を調整する:

    DECLARE @thedate date
    SET @thedate = '2020-12-01'
    SELECT 
      @thedate AS 'date',
      DATEADD(hour, 8, CONVERT(datetime, @thedate)) AS 'datetime';
    

    結果:

    +------------+-------------------------+
    | date       | datetime                |
    |------------+-------------------------|
    | 2020-12-01 | 2020-12-01 08:00:00.000 |
    +------------+-------------------------+
    

    1. MySQL:行レベルのセキュリティ(Oracleの仮想プライベートデータベースなど)を実行するにはどうすればよいですか?

    2. MySQLまたはMariaDB用のGaleraClusterを使用した複数のデータセンターのセットアップ

    3. MAKEDATE()の例– MySQL

    4. 多言語データベース設計のベストプラクティス