Sql server SQL日期转换

Sql server SQL日期转换,sql-server,date,Sql Server,Date,我有下面的代码,它将给我指定日期前1个月的日期。例如,如果我想得到11/30/11之前1个月的日期,下面的代码将给出2011/10/31的结果 select CONVERT(DATETIME, DATEADD(d,-1,DATEADD(mm, DATEDIFF(m,0,'11-30-11'),0)), 102) 如何修改上述代码,使其返回我指定的日期前两个月的日期,以便在代码中指定“11-30-11”时返回2011/09/30 我真的不明白上面的代码是如何工作的?我尝试将-1改为-2,

我有下面的代码,它将给我指定日期前1个月的日期。例如,如果我想得到11/30/11之前1个月的日期,下面的代码将给出2011/10/31的结果

    select CONVERT(DATETIME, DATEADD(d,-1,DATEADD(mm, DATEDIFF(m,0,'11-30-11'),0)), 102)
如何修改上述代码,使其返回我指定的日期前两个月的日期,以便在代码中指定“11-30-11”时返回2011/09/30

我真的不明白上面的代码是如何工作的?我尝试将-1改为-2,但这只减去1天和1个月,因此它将返回2011/10/30,而不是10/31。我需要它返回2011/09/30,比代码中的日期(11-30-11)少2个月

带有0的DATEADD/DATEDIFF与1900年1月1日进行比较。因此,更改为32,使其成为1900年2月1日

此外,您的日期格式不安全。对SQL Server使用yyyymmdd

可能更简单,就像这样

DATEADD(d, -1, DATEADD(mm, -2, DATEADD(d, 1,'20111130')))
带有0的DATEADD/DATEDIFF与1900年1月1日进行比较。因此,更改为32,使其成为1900年2月1日

此外,您的日期格式不安全。对SQL Server使用yyyymmdd

可能更简单,就像这样

DATEADD(d, -1, DATEADD(mm, -2, DATEADD(d, 1,'20111130')))

11月30日前1个月为10月30日。你想要“上个月底”?正是我想要它返回上个月的最后一天。因此,上面的代码工作正常。它返回2011年10月31日,但我现在需要它返回代码中指定日期之前2个月的最后一天。它应该会在2011年9月30日返回工作正常的状态。谢谢11月30日前1个月为10月30日。你想要“上个月底”?正是我想要它返回上个月的最后一天。因此,上面的代码工作正常。它返回2011年10月31日,但我现在需要它返回代码中指定日期之前2个月的最后一天。它应该会在2011年9月30日返回工作正常的状态。谢谢