Bagaimana cara mendapatkan waktu dari format DateTime dalam SQL?

182

Saya hanya ingin mendapatkan Waktu dari kolom DateTime menggunakan kueri SQL menggunakan SQL Server 2005 dan 2008 Output default:

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

Saya ingin output ini:

AttDate                Time 
==
2011-02-09 13:09:00    13:09
2011-02-09 14:10:00    14:10
Jig12
sumber
mencari metode to_char di sql. Anda dapat menentukan format dan mendapatkan hasil yang diinginkan
Naveen Babu
1
pilih konversi (varchar (10), getdate (), 108)
rahularyansharma
Bisa SELECT CONVERT(VARCHAR(8),GETDATE(),108)untuk server sql
V4Vendetta

Jawaban:

342

SQL Server 2008:

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

Versi sebelumnya:

SELECT convert(char(5), AttDate, 108) [time]
FROM yourtable
t-clausen.dk
sumber
34

Dengan asumsi server Sql

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

V4Vendetta
sumber
Ini hanya berfungsi pada getdate () di mana ketika saya melewati convert pilih (varchar (8), '2011-02-09 13: 09: 00', 108) itu menghasilkan 8 karakter pertama dari tanggal. Bagaimana cara memperbaikinya ?
Aparna
24

SQL Server 2008+ memiliki tipe data "waktu"

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

Untuk versi yang lebih lama, tanpa konversi varchar

SELECT 
    ..., DATEADD(dd, DATEDIFF(dd, MyDateTimeCol, 0), MyDateTimeCol)
FROM
   ...
gbn
sumber
mengapa Anda tidak menggunakan CONVERT SELECT (VARCHAR (8), GETDATE (), 108) SEBAGAI HourMinuteSecond, CONVERT (VARCHAR (8), GETDATE (), 101) SEBAGAI Date Date. Hanya ada masalah kinerja?
rahularyansharma
2
@rahularyansharma: Saya tidak menggunakan konversi varchar untuk tanggal jika diperlukan
gbn
Pak saya ingin tahu apakah ada penurunan kinerja jika kami menggunakan ini bukan solusi Anda?
rahularyansharma
1
@rahularyansharma: Anda dapat menguji diri sendiri berdasarkan stackoverflow.com/questions/133081/…
gbn
1
Bagi siapa pun yang tidak mengikuti, 0merupakan tanggal minimum 1900-01-01. Jadi ini mendapatkan jumlah hari (negatif) antara nilai kolom dan 0, kemudian menambahkan hari-hari negatif ke nilai kolom yang "nol" dari bagian tanggal 1900-01-01dan Anda hanya memiliki waktu.
xr280xr
13

Cara paling sederhana untuk mendapatkan waktu dari datetime tanpa tumpukan milidetik adalah:

SELECT convert(time(0),getDate())
Ayah Besar
sumber
10

Coba gunakan ini

  • Tanggal ke Waktu

    select cast(getdate() as time(0))
  • Saatnya TinyTime

    select cast(orig_time as time(0))
Cantarero
sumber
5

Coba ini:

select  convert(nvarchar,CAST(getdate()as time),100)
Balaji N
sumber
5

Coba ini, ini akan berhasil:

CONVERT(VARCHAR(8),DATETIME,114)

Untuk referensi Anda .

pengguna8498521
sumber
3

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

sagar Shah
sumber
3
select cast (as time(0))

akan menjadi klausa yang bagus. Sebagai contoh:

(select cast(start_date as time(0))) AS 'START TIME'
Metin Özsoy
sumber
3

Saya sering menggunakan skrip ini untuk mendapatkan Waktu dari DateTime:

SELECT CONVERT(VARCHAR(9),RIGHT(YOURCOLUMN_DATETIME,9),108) FROM YOURTABLE
ChinoNoypi
sumber
Mengapa saya mendapatkan 9 di depan waktu .. Hasil: 9 11:21
Sayed Muhammad Idrees
2

Untuk mendapatkan waktu dari datetime, kita bisa menggunakan

SELECT CONVERT(VARCHAR(20), GETDATE(), 114)
thevan
sumber
2

Jika Anda ingin berkencan dengan gaya ini: 23 Okt 2013 10:30

Gunakan ini

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

convert() Metode mengambil 3 parameter

  1. tipe data
  2. Kolom / Nilai
  3. Gaya: Gaya yang tersedia mulai dari 100 hingga 114. Anda dapat memilih dalam kisaran mulai dari. Pilih satu per satu untuk mengubah format tanggal.
Arif Ansari
sumber
2

Dapatkan tanggal server

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

atau

Jika disimpan dalam tabel

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

Hasil:

11:41 pagi

Luis Gerardo López Salazar
sumber
1
select convert(char(5), tbl_CustomerBooking.CheckInTime, 108) AS [time]
from tbl_CustomerBooking
JIYAUL MUSTAPHA
sumber
1

pada MSSQL2012 atau lebih tinggi

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

...atau...

convert(time(0),dateadd(ms,datediff(ms, [StartDateTime], [StopDateTime]),0) )
aVB.NetCoder
sumber
1

SQL Server 2012:

Select TRY_CONVERT(TIME, myDateTimeColumn) from myTable;

Secara pribadi, saya lebih suka TRY_CONVERT () daripada CONVERT (). Perbedaan utama: Jika cast gagal, TRY_CONVERT () mengembalikan NULL sementara CONVERT () memunculkan kesalahan.

jinhr
sumber
-1

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

Output: dari

05:11:26
05:11:24
05:11:24
pengguna7131338
sumber
Tidak berfungsi memberikan kesalahan'to_char' is not a recognized built-in function name.
captainsac