How can I get the last 12 months from the current date PLUS extra days till 1st of the last month retrieved

后端 未结 3 1866
名媛妹妹
名媛妹妹 2021-01-18 03:48

Getting the last 12 months from a specific date is easy and can be retrieved by the following command in SQL-server. Its answer is 2014-08-17.

select Dateadd         


        
相关标签:
3条回答
  • 2021-01-18 04:23

    If you want all the records since the first day of the current month last year, then you can use:

    where <somedate> >= dateadd(day, 1 - day(dateadd(month, -12, getdate()),
                                dateadd(month, -12, getdate()))
    

    For all days except Feb 29th, you can use the simpler:

    where <somedate> >= dateadd(day, 1 - day(getdate()),
                                dateadd(month, -12, getdate))
    
    0 讨论(0)
  • 2021-01-18 04:27
    SELECT dateadd(month,datediff(month,0,getdate())-12,0)
    

    Result is

    -----------------------
    2014-08-01 00:00:00.000
    

    So the where clause should be

    WHERE datecol >=dateadd(month,datediff(month,0,getdate())-12,0)
    

    to get all data starting from jan 01 of last year's same month

    0 讨论(0)
  • 2021-01-18 04:33

    Using DATEADD and DATEDIFF:

    DECLARE @ThisDate DATE = '20150817'
    SELECT DATEADD(YEAR, -1, DATEADD(MONTH, DATEDIFF(MONTH, '19000101', @ThisDate), '19000101'))
    

    For more common date routines, see this article by Lynn Pettis.


    To use in your WHERE clause:

    DECLARE @ThisDate DATE = '20150817'
    SELECT *
    FROM <your_table>
    WHERE
        <date_column> >= DATEADD(YEAR, -1, DATEADD(MONTH, DATEDIFF(MONTH, '19000101', @ThisDate), '19000101'))
    
    0 讨论(0)
提交回复
热议问题