myTableにintフィールド(Days
)があります。 Year-Month-Day Stringにどのようにフォーマットできますか?SQL Server 2008のT-SQLで日付を年月日形式に変換する方法
T-SQL SQL Server 2008でこれを行います。
たとえば、次のようにします。
65日= 0年2月5日このようにします。
ありがとうございました。
myTableにintフィールド(Days
)があります。 Year-Month-Day Stringにどのようにフォーマットできますか?SQL Server 2008のT-SQLで日付を年月日形式に変換する方法
T-SQL SQL Server 2008でこれを行います。
たとえば、次のようにします。
65日= 0年2月5日このようにします。
ありがとうございました。
「ゼロ」は、ここで1月1日1900これは場合は、この
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日を持っています。月の長さは非常に4年ごとなので、「年」を年+月+日として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や他の問題
...
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日目を示していますその年)、解決できるよりも。期間の一般的な年 - 月 - 日への変換は正確ではありません。 –