月和日差异的更新

时间:2013-12-31 02:39:40

标签: sql sql-server sql-server-2008 sql-update datediff

我有一张如下表所示的表格:

enter image description here

注意:MAX last_orderdate是20131015,格式为yyyymmdd。

我想将最终结果显示如下:

enter image description here

是否有任何查询可以帮助我,因为我有200000多条记录。

非常感谢你花时间看我的问题。

3 个答案:

答案 0 :(得分:0)

尝试这样的事情:

declare @a date
set @a='20130105'

declare @b date
set @b='20131015'

select datediff(d,@a,@b) as date_diff,datediff(m,@a,@b) as month_diff

答案 1 :(得分:0)

对于DATEDIFF()功能

试试这个:

UPDATE A 
SET A.monthDiff = DATEDIFF(mm, CONVERT(DATE, A.orderDate, 112), B.lastOrderDate), 
    A.dayDiff = DATEDIFF(dd, CONVERT(DATE, A.orderDate, 112), B.lastOrderDate)
FROM tableA A, (SELECT MAX(CONVERT(DATE, orderDate, 112)) lastOrderDate FROM tableA) B

检查SQL FIDDLE DEMO

<强>输出

| ID | ORDERDATE | MONTHDIFF | DAYDIFF |
|----|-----------|-----------|---------|
|  1 |  20130105 |         9 |     283 |
|  2 |  20130205 |         8 |     252 |
|  3 |  20130305 |         7 |     224 |
|  4 |  20130909 |         1 |      36 |
|  5 |  20131001 |         0 |      14 |
|  6 |  20131015 |         0 |       0 |

答案 2 :(得分:0)

试试这个。
select DATEDIFF(DAYOFYEAR,'20131015','20131125')
DAYOFYEAR表示天数。取决于您的要求,您可以使用 DATEDIFF

更改为查看月,日或年差异