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

ISO形式の日付をDATETIMEに変換します

    問題は、文字列がではないことです。 受け入れられているSQLServerの日時形式。 SQLServerはISO8601を認識します 形式は次のとおりです:

    yyyy-mm-ddThh:mi:ss.mmm
    

    これは2013-03-02T16:48:00になります 上記の日付について。

    日付と時刻のスタイル を参照してください。 セクション。

    したがって、次のステートメントは失敗します:

    declare @date nvarchar(max) = '20130302T164800'
    
    select convertedDate = cast(@date as datetime)
    

    文字列をISO8601に変換する場合 形式の場合、ステートメントは機能します:

    declare @date nvarchar(max) = '2013-03-02T16:48:00'
    
    select convertedDate = cast(@date as datetime)
    

    SQL Fiddle with demo

    1つのステートメントでフォーマットを更新して1つのSQLServerが認識し、文字列を日時にキャストできます。

    declare @date nvarchar(max) = '20130302T164800'
    
    select cast(left(@date, 4)
      + '-' + substring(@date,5,2)
      + '-' + substring(@date,7,5)
      + ':' + substring(@date,12,2)
      + ':' + substring(@date,14,2) as datetime)
    

    SQL Fiddle with demo

    これは単なる例であり、SQL Serverで認識される任意の形式に変換できますが、これにより ISO8601に変換されます。 。基本的に、変換が機能するように、別の形式に変換します。




    1. Oracleデータベースからランダムにレコードを取得するにはどうすればよいですか?

    2. フィールドに$xが含まれていないSQLクエリ

    3. Node.jsでSequelizeを使用して結合クエリを作成する方法

    4. エラーコード:1305。FUNCTIONまたはPROCEDUREが存在しません