2016-12-19 2 views
1

間の現在の日時を比較する私のコードです:はここ2日

declare @fdate varchar(50) 
declare @tdate varchar(50) 
declare @diff int 
declare @CalFromdate datetime 
declare @CalTodate datetime 

set @diff = 360 
set @fdate = '2016-12-19 09:30:00' 

set @CalFromdate = DATEADD(mi,@diff,CONVERT(DATETIME, @fdate)) 
print @CalFromdate 

set @CalTodate = DATEADD(mi,@diff,CONVERT(DATETIME, @tdate)) 
print @CalTodate 

は、私はこのフォーマットをしたくないFROMDATE

として私をDec 19 2016 3:30PM与えます。

「2016-12-19 09:30:00」または「2016-12-19 09:30:00:0000」です。私は現在の日付getdate()と2つの日付を比較したいと思います。上記の出力形式を私のgatedate形式で使用すると、それは動作するのでしょうか?または両方が同じ形式でなければなりませんか?

+3

日付はフォーマットを決して持つべきではありません。日付(パラメータタイプ 'date' /' datetime')でなければなりません。 –

+1

日付/時刻のフォーマットはプレゼンテーションレイヤのコンセプトです。厳密に言えば、それは情報を含む私たちの周りの世界を知覚する方法です。日付/時刻は実際には特定の時点であり、そうではないために書式を持つとは考えないでください。したがって、日付/時刻がどのように表示されるかを気にする必要がある唯一のポイントは、コードがフォーマットを気にして何か間違っている場合以外は人間に出力することです。 – Igor

+0

使用される構文に基づいて 'sql-server'と' tsql'で再タグ付けされます。 –

答えて

0

Dec 19 2016 3:30PMという形式の日付は、datetimeの値を印刷するときにSSMSで適用される完全に任意の書式なので、表示されます。

あなたがselect代わりのprintにコードを変更する場合は、フォーマット2016-12-19 15:30:00.000であなたのdatetime値を返しますが、再び、これはデータの種類を表示するために使用されるだけで、任意のフォーマットです。

datetimeの値には、実際には書式はありません。それは単に日付と時刻です。あなたの比較でそれを使用して、データを提示しているものは何でも、アプリケーション内の書式を心配。


を余談として、あなたもあなたのように、あなたの@fdateまたは@tdateパラメータにconvertを使用して気にする必要はありません。 declareステートメントにdatetimeという値を既に指定しています。

関連する問題