ラベル YYYYMMDDシリーズ の投稿を表示しています。 すべての投稿を表示
ラベル YYYYMMDDシリーズ の投稿を表示しています。 すべての投稿を表示

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

 
 
以降解説

Windows、VBScriptでYYYYMMDD

YYYYMMDD(hhmm)。シリーズ。
ログファイルを出力するなら「これ+プリフィックス」をファイル名にするのが理想ではないでしょうか。
のVBScript、WSH編。
 
サンプルの下記テキストを.VBSで保存して実行します。


[sourcecode language='vb']
'/// 年月日 作成
tmpYYYYMMDD = year(now()) & Right(00 & month(now()), 2) & Right(00 & day(now()), 2)

'/// 時分 作成
tmpHHMM = Right(00 & hour(now()), 2) & Right(00 & minute(now()), 2)

'/// 合成
strDate = tmpYYYYMMDD & tmpHHMM
Wscript.echo strDate
[/sourcecode]

 
もともと便利な関数はありますが、少し表示の癖を吸収する必要が。実行結果は下記。
[caption id="attachment_447" align="alignnone" width="167" caption="画像:スクリプトの実行結果"]画像:スクリプトの実行結果[/caption]
 
 
以降解説へ。

2008年7月24日木曜日

Windows、PowerShellでYYYYMMDD

YYYYMMDD(hhmm)。シリーズ。
ログファイルを出力するなら「これ+プリフィックス」をファイル名にするのが理想ではないでしょうか。
のPowerShell編。
 
PowerShellのプロンプトで、"Get-Date"コマンドを試してみます。
PS > Get-Date -format yyyyMMddHHmm
200807232230
終わってしまいましたね。
 
PS1(PowerShellのスクリプトファイル)で組み立ててみます、とりあえず下記を"yyyymmdd.ps1"で保存。$yyyymmdd = Get-Date -Format yyyyMMddHHmm
Write-Output $yyyymmdd
PS > .\yyyymmdd.ps1
200807232230
やっぱりこれで終わり、楽ですね。
特に解説する必要もなさそうです、まあLinuxでやると元々こんなもんですし。
 
 
"Get-Date"のヘルプを見ると、これでもかと言うくらい色々な形式を指定できます。
.NETフレームワークのライブラリ拝借、UNIX形式の組み込みと、後発なのをいいことにやりたい放題ですが、ちょっと不満が…
それはまた別の話で。2.0で解消されるかもしれないし。

WindowsバッチファイルでYYYYMMDD

YYYYMMDD(hhmm)。
バッチファイル内でログファイルを出力するなら「これ+プリフィックス」をファイル名にするのが理想ではないでしょうか。
 
ちょっとバッチファイルで組み立てましょう、下記をテキストファイルに入力して拡張子をbatにします。
@echo off
set tmpDate10=%date:~-10%
set YYYYMMDD=%tmpDate10:/=%
echo %YYYYMMDD%

set tmpTime5=%time:~0,5%
set tmpTime4=%tmpTime5::=%
set HHMM=%tmpTime4: =0%
echo %HHMM%

echo %YYYYMMDD%%HHMM%
pause

 
変数"YYYYMMDD"は年月日、"HHMM"を時分として組み立てています。
実行すると下記、
20080723
2230
200807232230
続行するには何かキーを押してください . . .

この変数を使ってファイル名なり何なりを定義してしまえばいいのですが、
何でこんなにややこしくなってしまうのでしょうか。
一応続きで解説しておきます。