SQLServer
oracle

SQL Serverで、yyyyMMddHHmmss形式の文字列をDateTime型に変換する

OracleからSQLServerへのマイグレを行うプロジェクトに携わった時のメモ。

プログラムから渡されるyyyyMMddHHmmss形式の文字列をDateTime型に変換する際にスムーズに行かなかったので以下のやり方で対応した。

Oracle
to_date('20171121235959', 'YYYYMMDDHH24MISS')
SQLSERVER
--SQLServerのSTUFF関数で半角スペースと':'を挿入し、yyyyMMdd HH:mm:ss形式にすることで、convert関数そのままDateTime型にキャストすることが可能。
--※そのままというのは、第3引数が不要ということ。
convert(DateTime,stuff(stuff(stuff('20171121235959', 9, 0, ' '), 12, 0, ':'),15, 0, ':'))
メモ
/*
--他にもyyyy-MM-dd HH:mm:ssやyyyy/MM/dd HH:mm:ss形式に変えてから渡すとCONVERT関数の第三引数にStyle値を渡す必要がなくなる。


・・・。何でこの文章をコメントで書いているかというと、本文書くときに:mmという文字が絵文字になっちゃうため。
だれか絵文字のエスケープ教えてくださいm(_ _)m
*/