myTable에 int 필드 (Days
)가 있습니다. Year-Month-Day String으로 어떻게 포맷 할 수 있습니까?SQL Server 2008에서 T-SQL을 사용하여 일 - 월 - 일 형식을 변환하는 방법
싶어 T-SQL의 SQL 서버 예를 들어 2008 년
이 작업을 수행;
65 일 = 0 년 2 월 5 일 이처럼.
감사합니다.
myTable에 int 필드 (Days
)가 있습니다. Year-Month-Day String으로 어떻게 포맷 할 수 있습니까?SQL Server 2008에서 T-SQL을 사용하여 일 - 월 - 일 형식을 변환하는 방법
싶어 T-SQL의 SQL 서버 예를 들어 2008 년
이 작업을 수행;
65 일 = 0 년 2 월 5 일 이처럼.
감사합니다.
에서 측정되고 있다는 사실을 숙지은 "제로"여기에 월 1900 01이이
SELECT
dateadd(day, myColumn, 0)
FROM
myTable
하면 관련된 날짜를 제공합니다 별도로 구성 요소 값을 나누고 싶습니다.
WITH CTE AS
(
SELECT
dateadd(day, myColumn, 0) AS theDate
FROM
myTable
)
SELECT
DATEPART(year, theDate) - 1900,
DATEPART(month, theDate),
DATEPART(day, theDate)
FROM
CTE
그런 다음 윤년 문제도 있습니다. 1904 년 2 월 28 일 이후에 1904 년 2 월 29 일이 있습니다. "년"을 년 + 월 + 일로 100 % 보장하는 방법은 없습니다. 내가 잘못 이해 한 경우
은, 올해로 리베이스하는 "제로"
SELECT
DATEADD(day, DATEDIFF(day, '0001-01-01', 0), CAST(DATEADD(day, myColumn, 1) as date))
FROM
myTable
declare @days int
set @days = 65
select
cast(year(dateadd(day,@days,0))-1900 as varchar) + ' Year '
+ cast(month(dateadd(day,@days,0)) as varchar) + ' Month '
+ cast(day(dateadd(day,@days,0)) as varchar) + ' Day'
이 junuari의 1 차 및 기타 문제
...
select
cast((DATEDIFF(year, StartDate, getdate()))as CHAR(3)) +'years '+
case when (datediff(DAY,DATEADD(month,DATEDIFF(month,DATEADD(year,(DATEDIFF(year, StartDate, getdate())),StartDAte), getdate()),
DATEADD(year,(DATEDIFF(year, StartDate, getdate())),StartDAte)),GETDATE()))<0
then
cast(DATEDIFF(month,DATEADD(year,(DATEDIFF(year, StartDate, getdate())),StartDAte), getdate()) -1 AS CHAR(2))
else
cast (DATEDIFF(month,DATEADD(year,(DATEDIFF(year, StartDate, getdate())),StartDAte), getdate())AS CHAR(2))
end +'months '+
-------------------------------------------
case when (datediff(DAY,DATEADD(month,DATEDIFF(month,DATEADD(year,(DATEDIFF(year, StartDate, getdate())),StartDAte), getdate()),
DATEADD(year,(DATEDIFF(year, StartDate, getdate())),StartDAte)),GETDATE()))<0
then
cast(datediff(DAY,DATEADD(month,DATEDIFF(month,DATEADD(year,(DATEDIFF(year, StartDate, getdate())),StartDAte), getdate())-1,
DATEADD(year,(DATEDIFF(year, StartDate, getdate())),StartDAte)),GETDATE()) as CHar(2))
else
cast(datediff(DAY,DATEADD(month,DATEDIFF(month,DATEADD(year,(DATEDIFF(year, StartDate, getdate())),StartDAte), getdate()),
DATEADD(year,(DATEDIFF(year, StartDate, getdate())),StartDAte)),GETDATE())as Char(2))
end+'days' as
Lenghtofservice
--DATEADD(year,(DATEDIFF(year, StartDate, getdate())),StartDAte))
from dbo.Employee
은 65 (년의 65 일을 표시 하는가 어느 해를 해결할 수있는 것보다. 기간을 년 - 월 - 일로 일반적으로 변환하는 것은 정확할 수 없습니다. –