2012-03-13 9 views
0

は、なぜ私が午前または午後はなぜ日付ショー午前または午後

DECLARE @inputDate varchar(25) 
SELECT @inputDate = '3/13/2012 13:00' 

-- Declare the return variable here 
DECLARE @Result DATETIME 
DECLARE @toReturn NVARCHAR(25) 

-- Add the T-SQL statements to compute the return value here 
SET @inputDate = REPLACE(@inputDate, '24:00', '00:00') 
SET @Result = null 
SET @toReturn = null 
IF (ISDATE(@inputDate)=1) 
BEGIN 
    DECLARE @utcOffset int 
    SET @utcOffset = -(DATEDIFF(HH, GETUTCDATE(), GETDATE())) 
    SET @Result = DATEADD(HH, @utcOffset, @inputDate) 
    SET @toReturn = CONVERT(NVARCHAR, @Result, 101) 
END 

-- Return the result of the function 
SELECT @toReturn 

返し日付部分のみとの時間を取得していないですしないのですか?

+0

をだけ知っているので、すべてのタイムゾーンは時間でUTCからのオフセットされているわけではない - あなたは数分、または小さいものを使用することをお勧めします。また、あなたは_これを文字列として保持したいのですか?日付/時刻/タイムスタンプは、これらのタイプの中で最も良いです。 '@ utcOffset'が' 0'なら早めに返すことも考えてください。 –

答えて

1

最後の変換ステートメントでは101を使用していますが、これは日付のみです。

他のオプションについてはこちらをご覧ください。 CAST and CONVERT (Transact-SQL)

0

CONVERT演算子ではなく、101以外の日付形式を試してください。

0

最終的な変換では、日付のみを含む形式が使用されるため、時間要素はありません。

ではなく、次のことを試してみてください。

SET @toReturn = CONVERT(NVARCHAR, @Result, 121) 
関連する問題