Sql 更新月份和日期差异

Sql 更新月份和日期差异,sql,sql-server,sql-server-2008,sql-update,datediff,Sql,Sql Server,Sql Server 2008,Sql Update,Datediff,我有一个如下所示的表格: 注:最大最后订单日期为20131015,格式为yyyymmdd 我想将最终结果显示如下: 我有200000多条记录,有什么问题可以帮助我吗 非常感谢您花时间看我的问题。试试这样的方法: 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 功

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

注:最大最后订单日期为20131015,格式为yyyymmdd

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

我有200000多条记录,有什么问题可以帮助我吗


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

试试这样的方法:

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
功能

试试这个:

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
检查

输出

| 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 |
试试这个。
选择DATEDIFF(DAYOFYEAR,'20131015','20131125')


DAYOFYEAR
表示天数计数。根据您的要求,您可以使用
DATEDIFF

更改以查看月、日或年的差异。此选项是否立即更新整个列??你能告诉我我不熟悉sql的逻辑吗server@SaharshShah Hi,我使用这个查询,但是结果显示“从字符串转换日期和/或时间时转换失败”。你知道如何解决这个问题吗?thanks@user3094424检查我的更新答案,它会工作。我忘了您已经用这种格式存储了日期
yyyymmdd
。我们必须更改日期列的格式,才能得到日期差。@Saharsh Shah我可以知道什么是“STR_to_date”吗?@user3094424检查更新的答案。STR_TO_DATE函数用于将字符串转换为日期,但这是MySQL函数。我忘了你想要在SQL Server中Hi,我有一千多条记录,你上面的查询只能帮助我一个接一个地做,我需要一个查询来一次完成所有事情并更新它们?你有什么好的建议吗?光标会帮你的。你有2列来查看差异,选择光标中的那2列并更新它。嗨,我有1000多条记录,你上面的查询只能帮助我逐个完成,我需要一个查询来一次性完成所有事情并更新它们?你有什么好的建议吗?