DATEADD FUNCTION SQL

时间:2018-10-25 10:30:55

标签: sql sql-server tsql

我要从study("Tillson T3", overlay=true) length1 = input(8, "T3 Length") a1 = input(0.7, "Volume Factor") e1=ema((high + low + 2*close)/4, length1) e2=ema(e1,length1) e3=ema(e2,length1) e4=ema(e3,length1) e5=ema(e4,length1) e6=ema(e5,length1) c1=-a1*a1*a1 c2=3*a1*a1+3*a1*a1*a1 c3=-6*a1*a1-3*a1-3*a1*a1*a1 c4=1+3*a1+a1*a1*a1+3*a1*a1 T3=c1*e6+c2*e5+c3*e4+c4*e3 col1= T3>T3[1] col3= T3<T3[1] isNewCol1 = nz(col3[1]) and col1 isNewCol3 = nz(col1[1]) and col3 colorP = col1 ? green : col3 ? red : yellow plot(T3, color=colorP, linewidth=3, title="T3") plotshape(series=isNewCol1, title="col1", style=shape.triangleup, location=location.belowbar, color=green, text="Green", size=size.normal) plotshape(series=isNewCol3, title="col3", style=shape.triangledown, location=location.abovebar, color=red, text="Red", size=size.normal) alertcondition(condition=isNewCol1, title="isNewCol1", message="green") alertcondition(condition=isNewCol3, title="isNewCol3", message="red") 1st jan 2017中选择数据。

我有一个查询过的地方 31 dec 2018,但我只从BETWEEN DATEADD(year,-1,GETDATE()) AND DATEADD(year,1,GETDATE())october 2017那里获取数据。 我该如何实现?任何建议都值得赞赏。

3 个答案:

答案 0 :(得分:1)

一种方法是使用datediff()

where datediff(year, datecol, getdate()) <= 1

一种更明显的方法是进行显式日期比较:

where datecol >= datefromparts(year(getdate()) - 1, 1, 1) and
      datecol < datefromparts(year(getdate()) + 1, 1, 1)

答案 1 :(得分:0)

您将要使用此:

between DATEADD(year,-1,DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0))
and     DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1)

它指出日期在上一年的第一年和当年的最后一个日期之间,例如。 1st jan 2017 till 31 dec 2018

您输入了错误的日期,因为getdate()是当前日期,所以当您进行-1年时,它从今天开始,即25 October 2018,然后说-1 = 25 October 2017。与其他dateadd相同。

答案 2 :(得分:0)

您可以像下面这样简单地编写它,

select * from table_name WHERE (date_column BETWEEN '2017-01-01' AND '2019-01-01')

或者您也可以使用datepart进行特定年份的选择

select * from table_name where datepart(YYYY,date_column) >=2017 and datepart(YYYY,date_column) <=2019