SQL'de DateTime biçiminden Time nasıl alınır?


182

Yalnızca SQL Server 2005 ve 2008 kullanarak SQL sorgusu kullanarak DateTime sütunundan Time almak istiyorum Varsayılan çıktı:

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

Bu çıktıyı istiyorum:

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

sql içinde to_char yöntemi arayın. biçimi belirtebilir ve istediğiniz çıktıyı alabilirsiniz
Naveen Babu

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

SELECT CONVERT(VARCHAR(8),GETDATE(),108)Sql server için olabilir
V4Vendetta

Yanıtlar:


342

SQL Server 2008:

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

Önceki versiyonlar:

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

34

SQL sunucusu varsayılıyor

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


Sadece getdate () üzerinde çalışır. ?
Aparna

24

SQL Server 2008+ bir "zaman" veri tipine sahiptir

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

Varchar dönüşümleri olmayan eski sürümler için

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

neden SELECT CONVERT (VARCHAR (8), GETDATE (), 108) AS HourMinuteSecond, CONVERT (VARCHAR (8), GETDATE (), 101) AS DateOnly herhangi bir performans sorunu var mı?
rahularyansharma

2
@rahularyansharma: Gerekirse tarihler için varchar dönüşümü kullanmıyorum
gbn

efendim ben senin çözüm yerine bu kullanırsanız herhangi bir performans düşüş olduğunu bilmek istiyorum?
rahularyansharma

1
gbn

1
Takip etmeyen herkes 0için min tarihini temsil eder 1900-01-01. Bu, sütun değeri ile 0 arasındaki (negatif) gün sayısını alır, ardından bu negatif günleri, tarih bölümüne "sıfırlar" ve 1900-01-01yalnızca zamanın kalan sütun değerine ekler .
xr280xr

13

Milisaniye yığını olmadan datetime'dan zamanı almanın en basit yolu:

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

10

Bunu kullanmayı deneyin

  • Tarih / Zaman

    select cast(getdate() as time(0))
  • TinyTime Zamanı

    select cast(orig_time as time(0))

5

Bunu dene:

select  convert(nvarchar,CAST(getdate()as time),100)


3

select AttDate,convert(char(5), AttDate, 108) [Time] from yourTableName


3
select cast (as time(0))

iyi bir cümle olur. Örneğin:

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

3

DateTime zaman almak için sık sık bu komut dosyası kullanın:

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

neden zamanın önünde 9 olsun .. Sonuç: 9 11:21
Sayed Muhammed İdrees

2

Tarih saatinden zaman almak için şunu kullanabiliriz:

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

2

Bu tarzda bir şey isterseniz: 23 Eki 2013 10:30

Bunu kullan

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

convert() yöntem 3 parametre alır

  1. veri tipi
  2. Sütun / Değer
  3. Stil: Mevcut stiller 100 ila 114 arasındadır. Tarih biçimini değiştirmek için tek tek seçin.

2

Sunucunun tarihini al

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

veya

Tabloda depolanmışsa

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

Sonuç:

11:41


1
select convert(char(5), tbl_CustomerBooking.CheckInTime, 108) AS [time]
from tbl_CustomerBooking

1

MSSQL2012 veya üzeri sürümlerde

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

...veya...

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

1

SQL Server 2012:

Select TRY_CONVERT(TIME, myDateTimeColumn) from myTable;

Şahsen ben, CONVERT () yerine TRY_CONVERT () tercih ediyorum. Ana fark: Yayınlama başarısız olursa, CONVERT () bir hata verirken TRY_CONVERT () NULL döndürür.


-1

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

Çıktı: itibaren

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

'to_char' is not a recognized built-in function name.
captainsac
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.