SQL에서 DateTime 형식의 시간을 얻는 방법은 무엇입니까?


181

SQL Server 2005 및 2008 기본 출력을 사용하는 SQL 쿼리를 사용하여 DateTime 열에서 Time 만 가져 오려고합니다.

AttDate                   
==
2011-02-09 13:09:00    
2011-02-09 14:10:00    

이 출력을 원합니다 :

AttDate                Time 
==
2011-02-09 13:09:00    13:09
2011-02-09 14:10:00    14:10

SQL에서 to_char 메소드를 검색하십시오. 형식을 지정하고 원하는 출력을 얻을 수 있습니다
Naveen Babu

1
select convert (varchar (10), getdate (), 108)
rahularyansharma

그것은 SELECT CONVERT(VARCHAR(8),GETDATE(),108)SQL 서버에 대한 것일 수 있습니다
V4Vendetta

답변:


341

SQL Server 2008 :

SELECT cast(AttDate as time) [time]
FROM yourtable

이전 버전 :

SELECT convert(char(5), AttDate, 108) [time]
FROM yourtable

34

SQL 서버 가정

SELECT CONVERT(VARCHAR(8),GETDATE(),108)


그것은 select convert (varchar (8), '2011-02-09 13 : 09 : 00', 108)를 전달할 때 날짜에서 처음 8자를 생성하는 getdate ()에서만 작동합니다. ?
Aparna

24

SQL Server 2008+에는 "시간"데이터 유형이 있습니다

SELECT 
    ..., CAST(MyDateTimeCol AS time)
FROM
   ...

varchar 변환이 없는 이전 버전의 경우

SELECT 
    ..., DATEADD(dd, DATEDIFF(dd, MyDateTimeCol, 0), MyDateTimeCol)
FROM
   ...

왜이 SELECT CONVERT (VARCHAR (8), GETDATE (), 108) AS HourMinuteSecond, CONVERT (VARCHAR (8), GETDATE (), 101) AS DateOnly AS 성능 문제가 있습니까?
rahularyansharma

2
@rahularyansharma : 필요한 경우 날짜에 varchar 변환을 사용하지 않습니다
gbn

선생님 대신 솔루션을 사용하면 성능이 저하되는지 알고 싶습니다.
rahularyansharma


1
팔로우하지 않는 사람 0은 최소 날짜를 나타냅니다 1900-01-01. 따라서 이것은 열 값과 0 사이의 (음수) 일 수를 얻은 다음 그 음수 일을 열 부분에 추가하여 날짜 부분을 "제로 아웃" 1900-01-01하고 시간 만 남습니다.
xr280xr

13

밀리 초 스택없이 날짜 시간에서 시간을 얻는 가장 간단한 방법은 다음과 같습니다.

SELECT convert(time(0),getDate())

10

이것을 사용해보십시오

  • 날짜 별

    select cast(getdate() as time(0))
  • 작은 시간

    select cast(orig_time as time(0))


5

이것을 시도하면 효과가 있습니다.

CONVERT(VARCHAR(8),DATETIME,114)

당신의 참고 를 위해 .



3
select cast (as time(0))

좋은 절이 될 것입니다. 예를 들면 다음과 같습니다.

(select cast(start_date as time(0))) AS 'START TIME'

3

나는 종종이 스크립트를 사용하여 DateTime에서 시간을 얻습니다.

SELECT CONVERT(VARCHAR(9),RIGHT(YOURCOLUMN_DATETIME,9),108) FROM YOURTABLE

내가 왜 시간 앞에서 9를 얻는가 .. 결과 : 9 11:21 PM
Sayed Muhammad Idrees

2

날짜 시간부터 시간을 얻으려면 다음을 사용할 수 있습니다.

SELECT CONVERT(VARCHAR(20), GETDATE(), 114)

2

이 스타일로 데이트하고 싶다면 : 2013 년 10 월 23 일 10:30 AM

이것을 사용하십시오

SELECT CONVERT(NVARCHAR(30),getdate(), 100)

convert() 방법은 3 개의 매개 변수를 사용합니다

  1. 데이터 형식
  2. 열 / 값
  3. 스타일 : 사용 가능한 스타일은 100-114입니다. 범위 내에서 선택할 수 있습니다. 날짜 형식을 변경하려면 하나씩 선택하십시오.

2

서버 날짜 가져 오기

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7)) FROM TABLENAME WHERE ...

또는

그것이 테이블에 저장된 경우

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), datename, 100), 7)) FROM TABLENAME WHERE ...

결과:

오전 11:41



1

MSSQL2012 이상

cast(dateadd(ms,datediff(ms, [StartDateTime], [StopDateTime]),0) as Time(0))

...또는...

convert(time(0),dateadd(ms,datediff(ms, [StartDateTime], [StopDateTime]),0) )

1

SQL Server 2012 :

Select TRY_CONVERT(TIME, myDateTimeColumn) from myTable;

개인적으로 TRY_CONVERT ()를 CONVERT ()보다 선호합니다. 주요 차이점 : 캐스트가 실패하면 CONRYT ()가 오류를 발생시키는 동안 TRY_CONVERT ()는 NULL을 반환합니다.


-1

select substr(to_char(colUmn_name, 'DD/MM/RRRR HH:MM:SS'),11,19) from table_name;

출력 : from

05:11:26
05:11:24
05:11:24

작동하지 않습니다 오류 발생'to_char' is not a recognized built-in function name.
Captainsac
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.