[sql] SQL Server 2005/2008에서 요일 가져 오기
날짜가 2009 년 1 월 1 일인 경우 월요일, 화요일 등의 요일을 확인하고 싶습니다.
SQL Server 2005/2008에이 기능이 내장되어 있습니까? 아니면 보조 테이블을 사용해야합니까?
답변
답변
SQLMenace의 답변이 수락되었지만 SET
알고 있어야 할 중요한 옵션이 있습니다.
DATENAME 은 첫 번째 요일이 아래 그림과 같이 변경된 경우 정확한 날짜 이름 을 반환 하지만 동일한 DATEPART 값 은 반환 하지 않습니다 .
declare @DefaultDateFirst int
set @DefaultDateFirst = @@datefirst
--; 7 First day of week is "Sunday" by default
select [@DefaultDateFirst] = @DefaultDateFirst
set datefirst @DefaultDateFirst
select datename(dw,getdate()) -- Saturday
select datepart(dw,getdate()) -- 7
--; Set the first day of week to * TUESDAY *
--; (some people start their week on Tuesdays...)
set datefirst 2
select datename(dw,getdate()) -- Saturday
--; Returns 5 because Saturday is the 5th day since Tuesday.
--; Tue 1, Wed 2, Th 3, Fri 4, Sat 5
select datepart(dw,getdate()) -- 5 <-- It's not 7!
set datefirst @DefaultDateFirst
답변
SELECT CASE DATEPART(WEEKDAY,GETDATE())
WHEN 1 THEN 'SUNDAY'
WHEN 2 THEN 'MONDAY'
WHEN 3 THEN 'TUESDAY'
WHEN 4 THEN 'WEDNESDAY'
WHEN 5 THEN 'THURSDAY'
WHEN 6 THEN 'FRIDAY'
WHEN 7 THEN 'SATURDAY'
END
답변
특정 날짜의 요일에 대한 결정적 값을 얻으려면 DATEPART () 및 @@ datefirst 조합을 사용할 수 있습니다 . 그렇지 않으면 서버의 설정에 따라 다릅니다.
더 나은 솔루션을 얻으려면 다음 사이트를 확인하십시오.
MS SQL : 요일
요일은 0-6 범위에 있으며, 여기서 0은 일요일, 1은 월요일 등입니다. 그런 다음 간단한 case 문을 사용하여 정확한 요일 이름을 반환 할 수 있습니다.
답변
유럽:
declare @d datetime;
set @d=getdate();
set @dow=((datepart(dw,@d) + @@DATEFIRST-2) % 7+1);
답변
SQL Server 2012 이상에서는이 FORMAT
기능을 사용할 수 있습니다
SELECT FORMAT(GETDATE(), 'dddd')
답변
이것은 내 코드의 작업 복사본입니다 .SQL에서 날짜에서 날짜 이름을 검색하는 방법
CREATE Procedure [dbo].[proc_GetProjectDeploymentTimeSheetData]
@FromDate date,
@ToDate date
As
Begin
select p.ProjectName + ' ( ' + st.Time +' '+'-'+' '+et.Time +' )' as ProjectDeatils,
datename(dw,pts.StartDate) as 'Day'
from
ProjectTimeSheet pts
join Projects p on pts.ProjectID=p.ID
join Timing st on pts.StartTimingId=st.Id
join Timing et on pts.EndTimingId=et.Id
where pts.StartDate >= @FromDate
and pts.StartDate <= @ToDate
END