none
sql server 问题 RRS feed

  • 问题

  • 

    DATEADD(mm,1,CONVERT(datetime,'2013-02-28'))

    结果为:2013-03-28  我是加一个月我想得到的答案是:2013-03-31

    select DATEADD(mm,1,CONVERT(datetime,'2013-04-30'))

    结果为:2013-05-30 而我想得到2013-05-31

    有什么简单的方法,可以让他真正的加一个月,


    man



    • 已更改类型 Mr Air 2013年1月9日 2:42 没有好的答案
    • 已编辑 Mr Air 2013年1月9日 2:43
    2013年1月5日 6:38

全部回复

  • SELECT DATEADD(dd,-1,DATEADD(MONTH, DATEDIFF(MONTH, 0, CONVERT(datetime,'2013-02-28')) + 2, 0))


    【孟子E章】

    • 已标记为答案 Mr Air 2013年1月7日 6:07
    • 取消答案标记 Mr Air 2013年1月7日 6:12
    2013年1月7日 5:10
    版主
  • 如果是最后一天,加一个月是正确的。但是时间为:2013-02-12 加一个月,用上面方法是错误的,得到2013-03-31,应该得到2013-03-12

    man

    2013年1月7日 6:13
  • 任何一天都是对的,得到的是下月的最后一天

    按照你的说法

    2013-02-28应该是2013-03-28,为什么说是不正确的呢?你这明显是规则不统一,

    2013-02-28 结果为:2013-03-28  我是加一个月我想得到的答案是:2013-03-31

    你2013-02-28想要得到2013-03-31,那么2013-02-27想要得到什么呢?

    2013-05-30你想得到什么呢?2013-06-30?

    2013-05-31你又想得到什么呢?2013-06-30?还是2013-07-01?


    【孟子E章】




    2013年1月7日 6:20
    版主
  • 按照客户理解时间2013-02-12加一个月应该得到2013-03-12,

    2013-2-28加一个月应该是2013-3-31

    如果2013-2-28加一个月如果得到213-3-28,他们觉得不是加了一个月,加一个月应该是2012-3-31日。


    因为28号是二月份最后一天,所以加一个月也要是3月最后一天

    • 已编辑 Mr Air 2013年1月7日 7:02
    2013年1月7日 7:00