복붙노트

[SQL] 어떻게 현재 연도의 처음과 마지막 날짜를 얻으려면?

SQL

어떻게 현재 연도의 처음과 마지막 날짜를 얻으려면?

어떻게 현재 연도의 처음과 마지막 날짜를 얻을 수, SQL 서버 2000을 사용하십니까?

예상 출력 :

01/01/2012과 31/12/2012

해결법

  1. ==============================

    1.

    SELECT
       DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
       DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS EndOfYear
    

    위의 쿼리는 짧은 올해의 마지막 순간 24 시간에 대해 12 월 31 일이의 시작 부분에 자정에 날짜 시간 값을 제공합니다. 년 12 월 31 일에 발생할 수있는 시간을 포함 할 경우, 당신은 <비교하여, 다음 해의 첫 번째 비교해야한다. 아니면 현재 연도의 마지막 몇 밀리 초에 비교할 수 있지만 (예 : DATETIME2 등) DATETIME 이외의 것을 사용하는 경우에는이 여전히 격차를 잎 :

    SELECT
       DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
       DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS LastDayOfYear,
       DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0) AS FirstOfNextYear,
       DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0)) AS LastTimeOfYear
    

    기술 세부 사항

    DATEDIFF 1900 년부터의 연수를 파악하여이 작업 (YY, 0, GETDATE ())와 다음의 날짜에 해당 추가 이것은 대체하여, 임의의 날짜 일을 변경할 수 = 1 월 1 일 1900 제로 GETDATE () 또는 부와 DATEDIFF (...) 함수로 대체하여, 임의의 해 "연도 - 1900"

     SELECT
       DATEADD(yy, DATEDIFF(yy, 0, '20150301'), 0) AS StartOfYearForMarch2015,
       DATEADD(yy, 2015 - 1900, 0) AS StartOfYearFor2015
    
  2. ==============================

    2.당신은 () GETUTCDATE를 사용하여 얻은 현재 날짜에서, DATEPART 함수를 사용하여 현재 연도를 얻을 수 있습니다

    당신은 () GETUTCDATE를 사용하여 얻은 현재 날짜에서, DATEPART 함수를 사용하여 현재 연도를 얻을 수 있습니다

    SELECT 
        '01/01/' + CONVERT(VARCHAR(4), DATEPART(yy, getUTCDate())), 
        '31/12/' + CONVERT(VARCHAR(4), DATEPART(yy, getUTCDate()))
    
  3. ==============================

    3.여기 아주 간단한 방법이있다;

    여기 아주 간단한 방법이있다;

    SELECT DATEFROMPARTS(YEAR(GETDATE()), 1, 1) AS 'First Day of Current Year';
    SELECT DATEFROMPARTS(YEAR(GETDATE()), 12, 31) AS 'End of Current Year';
    

    그것은 섹시 아니지만, 그것을 작동합니다.

  4. ==============================

    4.간단하게 쓰기 : -

    간단하게 쓰기 : -

    select convert (date,DATEADD(YEAR,DATEDIFF(YEAR,0,GETDATE()),0))
    

    올해의 날짜를 시작합니다.

    select convert (date,DATEADD(YEAR, DATEDIFF(YEAR,0,GETDATE()) + 1, -1))  
    
  5. ==============================

    5.매년 만, 예를 들면 그 날과 달 연도를 부착한다 무엇을해야 마지막 날짜로 1 일 첫째 날짜와 (31) : -

    매년 만, 예를 들면 그 날과 달 연도를 부착한다 무엇을해야 마지막 날짜로 1 일 첫째 날짜와 (31) : -

     SELECT '01/01/'+cast(year(getdate()) as varchar(4)) as [First Day],
     '12/31/'+cast(year(getdate()) as varchar(4)) as [Last Day]
    
  6. ==============================

    6.첫 번째 올해의 마지막 날을 얻으려면 하나는 CONCAT 기능을 사용할 수 있습니다. 결과 값은 어떤 형식으로 캐스팅 할 수있다.

    첫 번째 올해의 마지막 날을 얻으려면 하나는 CONCAT 기능을 사용할 수 있습니다. 결과 값은 어떤 형식으로 캐스팅 할 수있다.

    CONCAT(YEAR(Getdate()),'-01-01') FirstOfYear,
    CONCAT(YEAR(GETDATE()),'-12-31') LastOfYear
    
  7. ==============================

    7.현재 연도의 시작 날짜 :

    현재 연도의 시작 날짜 :

    SELECT DATEADD(DD,-DATEPART(DY,GETDATE())+1,GETDATE())
    

    현재 연도의 종료일 :

    SELECT DATEADD(DD,-1,DATEADD(YY,DATEDIFF(YY,0,GETDATE())+1,0))
    
  8. ==============================

    8.또 다른 방법 : (이후는 SQL 서버 2012)

    또 다른 방법 : (이후는 SQL 서버 2012)

    SELECT
        DATEFROMPARTS(YEAR(GETDATE()), 1, 1) FirstDay,
        DATEFROMPARTS(YEAR(GETDATE()),12,31) LastDay
    
  9. ==============================

    9.이 하나를 체크 아웃 :

    이 하나를 체크 아웃 :

    select convert(varchar(12),(DateAdd(month,(Month(getdate())-1) * -1, DateAdd(Day,(Day(getdate())-1) * -1,getdate()))),103) as StartYear,
           convert(varchar(12),DateAdd(month,12 - Month(getdate()), DateAdd(Day,(31 - Day(getdate())),getdate())),103) as EndYear
    
  10. ==============================

    10.

    SELECT DATEADD(DD,-DATEPART(DY,GETDATE())+1,GETDATE())
    
  11. ==============================

    11.

    print Cast('1/1/' + cast(datepart(yyyy, getdate()) as nvarchar(4)) as date)
    
  12. ==============================

    12.당신이 특정 연도에 대한 동작 모든 것을 수행에 흥미있는 것처럼이 경우 실제로, 나는이 같은 YEAR () 함수를 사용하는 것이 좋습니다한다면 그것은 같습니다 :

    당신이 특정 연도에 대한 동작 모든 것을 수행에 흥미있는 것처럼이 경우 실제로, 나는이 같은 YEAR () 함수를 사용하는 것이 좋습니다한다면 그것은 같습니다 :

    SELECT * FROM `table` WHERE YEAR(date_column) = '2012';
    

    동일은 DAY ()와 MONTH 간다 (). MySQL은 / ​​MariaDB가 변형하고 (그렇게하지 특정 2000) SQL Server 2008의 도입을 위해 그들은 또한 사용할 수 있습니다.

  13. ==============================

    13.

    select to_date(substr(sysdate,1, 4) || '01/01'), to_date(substr(sysdate,1, 4) || '12/31') 
    from dual
    
  14. ==============================

    14.다음과 같이 마이크로 소프트 SQL 서버 (T-SQL)에서이 수행 할 수 있습니다

    다음과 같이 마이크로 소프트 SQL 서버 (T-SQL)에서이 수행 할 수 있습니다

    --beginning of year
    select '01/01/' + LTRIM(STR(YEAR(CURRENT_TIMESTAMP)))
    
    --end of year
    select '12/31/' + LTRIM(STR(YEAR(CURRENT_TIMESTAMP)))
    

    CURRENT_TIMESTAMP가 - 쿼리의 실행시의 SQL 서버의 날짜를 반환합니다.

    년 - 현재 타임 스탬프의 연도 부분을 가져옵니다.

    STR, LTRIM이 -이 두 가지 기능은 우리가 원하는 접두사로 concatinated 할 수있는 VARCHAR로이 변환 할 수 있도록 적용됩니다 (이 경우에는 올해의 첫 번째 날짜 또는 연도의 마지막 날짜 중 하나입니다). 어떤 이유로 YEAR 함수에 의해 생성 된 결과는 스페이스 접두어있다. 이를 해결하기 위해 우리는 트림을 왼쪽 된 LTRIM 함수를 사용합니다.

  15. ==============================

    15.그것은 월의 1에 도달하면 당신은 여전히 ​​마지막 년 날짜가 될 수 있습니다.

    그것은 월의 1에 도달하면 당신은 여전히 ​​마지막 년 날짜가 될 수 있습니다.

    select
    convert(date, DATEADD(yy, DATEDIFF(yy, 0,  DATEadd(day, -1,getdate())), 0), 103 ) AS StartOfYear,
    convert(date, DATEADD(yy, DATEDIFF(yy, 0, DATEDIFF(day, -1,getdate()))+1, -1), 103 )AS EndOfYear
    
  16. ==============================

    16.이 시도:

    이 시도:

    DATE_FORMAT(NOW(),'01/01/%Y')
    DATE_FORMAT(NOW(),'31/12/%Y')
    
  17. ==============================

    17.데모 Lalmuni --- ---

    데모 Lalmuni --- ---

    create table Users
    (
    userid int,date_of_birth date
    )
    

    --- 삽입 값 ---

    insert into Users values(4,'9/10/1991')
    
    select DATEDIFF(year,date_of_birth, getdate()) - (CASE WHEN (DATEADD(year, DATEDIFF(year,date_of_birth, getdate()),date_of_birth)) > getdate() THEN 1 ELSE 0 END) as Years, 
    MONTH(getdate() - (DATEADD(year, DATEDIFF(year, date_of_birth, getdate()), date_of_birth))) - 1 as Months, 
    DAY(getdate() - (DATEADD(year, DATEDIFF(year,date_of_birth, getdate()), date_of_birth))) - 1 as Days,
    from users
    
  18. from https://stackoverflow.com/questions/13437362/how-to-get-the-first-and-last-date-of-the-current-year by cc-by-sa and MIT license