2008年7月28日月曜日

SQLServer、T-SQLでYYYYMMDD

YYYYMMDD(hhmm)。シリーズ。
ログファイルを出力するなら「これ+プリフィックス」をファイル名にするのが理想ではないでしょうか。
のTransact SQL(T-SQL)編。
 
T-SQLでなぜ?という気もするでしょうが、実際使ったことがあるのでメモ投稿。
私はログ用のテーブルを自動でローテーションするジョブを作るときに使いました、YYYYMMDDのテーブル名をつけて過去ログを放り込む。
なお、これを使用しているのはSQLServer2000なので、SQLServer2005以降では試してません。
 
 
ではサンプルコード。


[sourcecode language='sql']
DECLARE @strDate varchar(128)

SET @strDate =
REPLACE(
CONVERT(varchar(10),getdate(),120)
, '-', '') +
REPLACE(
CONVERT(varchar(5),getdate(),108)
, ':', '')

PRINT @strDate
[/sourcecode]

 
クエリアナライザなどで実行すると、結果は下記。
200807271124

 
 
以降解説
 
 

解説


これに関してはBooksOnlineでCASTとCONVERT関数のところを見て終了という気がしますが一応簡単に。
 
@strDate 変数に文字列を突っ込むまで。

  1. CONVERT関数で日付(120=ODBC 標準形式)を左から10文字の文字列に変換
    2008-07-27

  2.  
  3. REPLACE関数でハイフンをつぶす
    20080727


  4.  
  5. 時:分 に関しても大体同じ、5文字にしてコロンをつぶして完了


 
ちなみに文字列にコンバートしないと、"2008" と "07" を連結して出力しようとしたら 足されて "2015" になってしまう。