SQL Server 2008 R2を使用しています。システム日付を次の形式に変換したい:dd/mm/yy
"2013-01-01 00:00:00.000" to "Score Calculation - 10/01/13".
私の列にはデータが含まれています:
1. DMS01A13010101
2. RMS01A13010201
3. 44
4. 2013-01-01 00:00:00.000
私が欲しいもの:レコードにこの形式の2013-01-01 00:00:00.000
がある場合、私だけがScore Caculation - dd/mm/yy
に変更されます
私のコードは、
select
case
when (CHARINDEX(D30.SPGD30_TRACKED_ADJUSTMENT_X, '-*') > 0 or
CHARINDEX(D30.SPGD30_TRACKED_ADJUSTMENT_X, '*-') > 0)
then 'Score Calculation - ' + CONVERT(VARCHAR(8), D30.SPGD30_TRACKED_ADJUSTMENT_X, 1)
end checkthedate
from
CSPGD30_TRACKING D30
_ SELECT CONVERT(varchar(11),getdate(),101) -- mm/dd/yyyy
SELECT CONVERT(varchar(11),getdate(),103) -- dd/mm/yyyy
_
これをチェックして 。 D30.SPGD30_TRACKED_ADJUSTMENT_Xが日時データ型であると想定しています。
これがCAST()
が文字式で機能するため、CHARINDEX()
関数を文字式として使用する理由です。
また、OR状態の必要はないと思います。
_select case when CHARINDEX('-',cast(D30.SPGD30_TRACKED_ADJUSTMENT_X as varchar )) > 0
then 'Score Calculation - '+CONVERT(VARCHAR(11), D30.SPGD30_TRACKED_ADJUSTMENT_X, 103)
end
_
編集:
_select case when CHARINDEX('-',D30.SPGD30_TRACKED_ADJUSTMENT_X) > 0
then 'Score Calculation - '+
CONVERT( VARCHAR(11), CAST(D30.SPGD30_TRACKED_ADJUSTMENT_X as DATETIME) , 103)
end
_
他の日付形式への変換については、このリンクを参照してください: https://www.w3schools.com/sql/func_sqlserver_convert.asp
以下のクエリはdd/mm/yy
形式になります。
select LEFT(convert(varchar(10), @date, 103),6) + Right(Year(@date)+ 1,2)
select convert(varchar(8), getdate(), 3)
単にこれをdd/mm/yyとこれに使用します
select convert(varchar(8), getdate(), 1)
mm/dd/yyの場合
これを試して
SELECT CONVERT(varchar(11),getdate(),101) -- Converts to 'mm/dd/yyyy'
SELECT CONVERT(varchar(11),getdate(),103) -- Converts to 'dd/mm/yyyy'
詳細はこちら: https://msdn.Microsoft.com/en-us/library/ms187928.aspx
以下のクエリはdd-mmm-yy形式になります。
select
cast(DAY(getdate()) as varchar)+'-'+left(DATEname(m,getdate()),3)+'-'+
Right(Year(getdate()),2)