現在の日付に日付を追加しようとしていますが、現在の日付に360日を追加すると、間違った値が表示されます。
例:現在の日付は2014年11月4日です。360日を追加しています。2015年4月11日になりますが、同じ日付の2014年4月11日を表示しています。年は変わっていません。
ここに私のコードがあります
select dateadd(dd,360,getdate())
ただやる
Select (Getdate()+360) As MyDate
指定された日付から日を加算または減算するために、dateadd関数を使用する必要はありません。年、月、時間を追加するには、dateadd関数が必要です。
select dateadd(dd,360,getdate())
は、次のように正しい日付を提供します。
2017-09-30 15:40:37.260
私はクエリを実行してチェックしました:
Dateadd(datepart,number,date)
次のように使用する必要があります:-
select DATEADD(day,360,getdate())
その後、同じ日付であるが異なる年が見つかります。
SQL Server 2017から 公式ドキュメント :
SELECT DATEADD(day, 360, GETDATE());
GETDATE
関数の時間部分を削除にしたい場合は、以下を実行できます。
SELECT DATEADD(day, 360, CAST(GETDATE() AS DATE));
2つまたは3つの方法(あなたが望むものに依存します)、私たちが現在の日付にいると言います(tsqlコードで)-
DECLARE @myCurrentDate datetime = '11Apr2014 10:02:25 AM'
(ちなみに、元の投稿で2014年4月11日または2014年11月11日を意味していましたか?私は推測する)
SELECT @myCurrentDate + 360
-デフォルトでは、日付と時刻の計算の後に+(整数)が続き、それを日単位で追加します。したがって、2015-04-06 10:02:25.000
を取得することになります-正確にあなたが望んだものではなく、来年の締め切りの単なる球場の数字です。
SELECT DateADD(DAY, 365, @myCurrentDate)
またはDateADD(dd, 365, @myCurrentDate)
は、「2015-04-11 10:02:25.000」を提供します。これら2つは合成糖です(まったく同じです)。これはあなたが望んだことだと思うべきです。ただし、日付が「4年のうち3年」(たとえば[DECLARE @myCurrentDate datetime = '11Apr2011 10:02:25 AM'
)年]の場合は '2012-04-10 10:02:25.000'になります。 2012年は366日だったので、覚えていますか? (2012年2月29日は「余分な」日を消費します。ほぼ4年ごとに29Febがあります)。
だからあなたが意味したと思うのは
SELECT DateADD(year, 1, @myCurrentDate)
2015-04-11 10:02:25.000
が得られます。
またはそれ以上
SELECT DateADD(year, 1, DateADD(day, DateDiff(day, 0, @myCurrentDate), 0))
2015-04-11 00:00:00.000
が得られます(datetimeにも時間がありますよね?)。微妙な、ああ?
SELECT DateAdd(5,day(getdate())
これは、現在の日に5日を追加するためのものです。例えば:今日の日付は2018年8月23日であり、上記のクエリを使用して2018年8月28日になりました
**Add Days in Date in SQL**
DECLARE @NEWDOB DATE=null
SET @NEWDOB= (SELECT DOB, DATEADD(dd,45,DOB)AS NEWDOB FROM tbl_Employees)
これを試すことができます
select (CONVERT(VARCHAR(10),GETDATE()+360,110)) as Date_Result