SQL Serverで行う場合何通りか方法があるかと思いますが、
いくつか調べた結果をメモしておきます。
(試したバージョンはSQL Server 2012、ロケールは日本)
DECLARE @d datetime
set @d = CONVERT(datetime, '2014-07-01')
/* DATENAME */
select DATENAME(yyyy, @d ) -- 2014
select DATENAME(yy, @d ) -- 2014
select DATENAME(m, @d ) -- 07
select DATENAME(mm, @d ) -- 07
select DATENAME(d, @d ) -- 1
select DATENAME(dd, @d ) -- 1
select DATENAME(m, @d) + right('0' + DATENAME(d, @d), 2) -- 0701
/* CONVERT */
select CONVERT(nvarchar(10),@d,12) -- 140701
select CONVERT(nvarchar(10),@d,112) -- 20140701
select CONVERT(nvarchar(10),@d,111) -- 2014/07/01
select right(CONVERT(nvarchar(10),@d,12),4) -- 0701
/* FORMAT */
select FORMAT(@d,'M') -- 7月1日
select FORMAT(@d,'MM') -- 07
select FORMAT(@d,'MMM') -- 7
select FORMAT(@d,'MMMM') -- 7月
select FORMAT(@d,'d') -- 2014/07/01
select FORMAT(@d,'dd') -- 01
select FORMAT(@d,'ddd') -- 火
select FORMAT(@d,'dddd') -- 火曜日
select FORMAT(@d,'MMdd') -- 0701
いかがでしょう。掲載したのはほんの一部ですが、予想と違う結果になっていないでしょうか。
DATENAMEの「m」が2ケタで「d」が1ケタだったり、
DATENAMEの「m」が2ケタで「mm」が2ケタだったり、
FORMATの「M」が7月1日になったり、
FORMATの「d」が2014/07/01になったり。
ちなみに、FORMAT関数は2008 R2以降となっていましたが、updateが当たってないのか
私の環境では2008 R2でもエラーになりました。DATENAME関数
FORMAT関数
CONVERT関数
0 件のコメント:
コメントを投稿