문제

어떻게 이런 식으로 전체 시간을 얻을 수 있습니까? datediff(time, logindate, logoutdate)

이 내장 기능이 시간 인수를 받아들이지 않는다는 것을 알고 있지만 분, 밀리 초, 두 번째 등이 아닌 전체 시간을 어떻게 얻을 수 있습니까?

logindate datetime2
logoutdate datetime2

나는 그것의 일부보다는 1:05:45와 같은 것을 원한다.

도움이 되었습니까?

해결책

이 시도

create table dbo.UserLog (UserID VARCHAR(32),loginDate DATETIME,logoutDate DATETIME)

insert into userLog VALUES ('SPARKY','11/14/2009 3:25pm',getDate())
insert into userLog VALUES ('JANNA','11/14/2009 10:45am',getDate())

select UserId,loginDate,logoutDate,
    convert(varchar(12),dateAdd(mi,datediff(mi,logindate,logoutdate),'Jan  1 1753 12:00AM'),114) as timeSpent
FROM userLog

기본적으로 날짜 사이의 가장 빠른 유효한 SQL 날짜와 시간으로 시간 차이를 추가하고 시간으로 형식화 된 값을 반환합니다.

다른 팁

날에 차이가 있습니다.

select cast(logoutdate - logindate as float) from table_name

아니면 그냥

select logoutdate - logindatefrom table_name

날, 시간, 몇 분을 평가할 수 있습니다.

편집하다

시간으로 포맷하려면 :

SELECT CONVERT(VARCHAR,DATA_KOSZTU - DATA_OST_ZMIANY,108) FROM TR_KOSZT

Convert가 TimesPan이 아닌 DateTime을 포맷하는 데 사용되므로 사용자가 24 시간 이상 기록되지 않은 경우 작동합니다.

MSSQL은 TimepSan 데이터 유형이 없기 때문에 datediff 밀리 초에서 몇 년으로 절대 정수로 돌아와서 말하는 인스턴스를 만들기에 충분해야합니다. TimeSpan .NET에서.

어떤 SQL 서버 버전에 대해 이야기하고 있습니까? SQL Server 2000 이상에서 최소한

SELECT datediff(ss,'2006-11-10 05:47:53.497','2006-11-10 05:48:10.420')

몇 초 만에 두 데이터 시간의 차이를 줄 것입니다.

EG Select Convert (Varchar (10), getDate (), 108)

여기에 찾고있는 솔루션이 있습니다.


DECLARE @Date1 datetime
DECLARE @Date2 datetime 
SET @Date2 = '2006-11-15 07:26:25.000'
SET @Date1 = '2009-11-15 05:35:45.000'
--            -----------------------
-- Math done by hand      1:50:40
--
DECLARE @TotalSeconds bigint
DECLARE @Hours        bigint
DECLARE @Minutes      bigint
DECLARE @Seconds      bigint
DECLARE @HH           varchar(20)
DECLARE @MM           varchar(2)
DECLARE @SS           varchar(2)
DECLARE @Result       varchar(50)
--
SET @TotalSeconds = datediff(ss,@Date1 ,@Date2)
SET @Hours        = FLOOR(@TotalSeconds / 3600)
SET @TotalSeconds = @TotalSeconds % 3600
SET @Minutes      = FLOOR(@TotalSeconds / 60)
SET @Seconds      = @TotalSeconds % 60  
--
SET @HH = CAST(@Hours   as varchar)
SET @MM = CAST(@Minutes as varchar)
SET @SS = CAST(@Seconds as varchar)
IF @Minutes < 10 SET @MM = '0' + @MM
IF @Seconds < 10 SET @SS = '0' + @SS
--
SET @Result = @HH + ':' + @MM + ':' + @SS
SELECT @Result


라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top