SQL Server 2005의 날짜/시간에서 월 및 연도 가져오기
2008년 1월과 같이 SQL Server에서 날짜로부터 월+년이 필요합니다.쿼리를 월별, 연도별로 그룹화하고 있습니다.날짜 부분, 변환 등의 기능을 검색해 봤지만, 이에 유용한 기능은 없을 것 같습니다.내가 뭘 빠트렸나요?이것을 위한 기능이 있습니까?
select
datepart(month,getdate()) -- integer (1,2,3...)
,datepart(year,getdate()) -- integer
,datename(month,getdate()) -- string ('September',...)
문자열로 되돌리려면 해당 형식을 사용합니다.
SELECT
CONVERT(CHAR(4), date_of_birth, 100) + CONVERT(CHAR(4), date_of_birth, 120)
FROM customers
SQL Server 2012부터는 다음을 사용할 수 있습니다.
SELECT FORMAT(@date, 'yyyyMM')
사용:
select datepart(mm,getdate()) --to get month value
select datename(mm,getdate()) --to get name of month
SQL Server 2012에서는 다음을 사용할 수 있습니다.
FORMAT(getdate(), 'MMmyyyy')를 선택합니다.
이것은 정확한 "2016년 6월"을 제공합니다.
재미있게도, 저는 SQL Server와 LINQ에서 동일한 쿼리를 작성하면서 놀고 있었습니다.
SELECT
DATENAME(mm, article.Created) AS Month,
DATENAME(yyyy, article.Created) AS Year,
COUNT(*) AS Total
FROM Articles AS article
GROUP BY
DATENAME(mm, article.Created),
DATENAME(yyyy, article.Created)
ORDER BY Month, Year DESC
다음과 같은 출력을 생성합니다(예).
Month | Year | Total
January | 2009 | 2
이건 어때?
Select DateName( Month, getDate() ) + ' ' + DateName( Year, getDate() )
해당 형식이 없습니다.두 가지를 조합해서 해야 합니다.
select convert(varchar(4),getdate(),100) + convert(varchar(4),year(getdate()))
( Month(Created) + ',' + Year(Created) ) AS Date
이를 위한 최선의 방법은 다음과 같습니다.
dateadd(month,datediff(month,0,*your_date*),0)
당신의 데이트 시간 유형을 유지할 수 있습니다.
cast(cast(sq.QuotaDate as date) as varchar(7))
"2006-04" 형식 제공
질문은 SQL Server 2005에 대한 것으로, 여기에 나와 있는 대부분의 답변은 최신 버전의 SQL Server에 대한 것입니다.
select convert (varchar(7), getdate(),20)
--Typical output 2015-04
SQL Server 2005에는 SQL Server 2008에 도입된 날짜 기능이 없습니다.
전체 월 이름, -, 전체 연도를 반환합니다. March-2017
CONCAT(DATENAME(mm, GetDate()), '-', DATEPART(yy, GetDate()))
저도 같은 문제가 있었는데 둘러본 결과 다음과 같은 것을 발견했습니다.
SELECT DATENAME(yyyy, date) AS year
FROM Income
GROUP BY DATENAME(yyyy, date)
잘 작동합니다!
날짜를 월 1일로 변환하면 하나의 속성으로 그룹화하고 주문할 수 있으며, 제 경험으로는 더 빠릅니다.
declare @mytable table(mydate datetime)
declare @date datetime
set @date = '19000101'
while @date < getdate() begin
insert into @mytable values(@date)
set @date = dateadd(day,1,@date)
end
select count(*) total_records from @mytable
select dateadd(month,datediff(month,0,mydate),0) first_of_the_month, count(*) cnt
from @mytable
group by dateadd(month,datediff(month,0,mydate),0)
---Lalmuni Demos---
create table Users
(
userid int,date_of_birth date
)
---insert values---
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
예, 사용할 수 있습니다.datename(month,intime)
월을 문자로 받기 위해.
,datename(month,(od.SHIP_DATE)) as MONTH_
답변: MONG_1월1월9월10월10월9월
아주 잘 작동합니다.
DECLARE @pYear VARCHAR(4)
DECLARE @pMonth VARCHAR(2)
DECLARE @pDay VARCHAR(2)
SET @pYear = RIGHT(CONVERT(CHAR(10), GETDATE(), 101), 4)
SET @pMonth = LEFT(CONVERT(CHAR(10), GETDATE(), 101), 2)
SET @pDay = SUBSTRING(CONVERT(CHAR(10), GETDATE(), 101), 4,2)
SELECT @pYear,@pMonth,@pDay
다음은 완벽하게 작동합니다!그냥 써봤어요, 한 번 써보세요.
date_format(date,'%Y-%c')
언급URL : https://stackoverflow.com/questions/45535/get-month-and-year-from-a-datetime-in-sql-server-2005
'programing' 카테고리의 다른 글
2D 배열을 C++ 함수로 전달 (0) | 2023.05.11 |
---|---|
아무것도 반환하지 않는 함수를 만드는 방법 (0) | 2023.05.11 |
Bash를 사용하여 절대 경로를 현재 디렉터리가 지정된 상대 경로로 변환 (0) | 2023.05.11 |
jQuery에서 요소 "플래시"를 만드는 방법 (0) | 2023.05.11 |
시스템 앱에만 권한이 부여됩니다. (0) | 2023.05.11 |