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

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

34

Dengan asumsi server Sql

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


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
   ...

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())

10

Coba gunakan ini

  • Tanggal ke Waktu

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

    select cast(orig_time as time(0))

5

Coba ini:

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))

akan menjadi klausa yang bagus. Sebagai contoh:

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

3

Saya sering menggunakan skrip ini untuk mendapatkan Waktu dari DateTime:

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

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)

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.

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


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

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) )

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.


-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

Tidak berfungsi memberikan kesalahan'to_char' is not a recognized built-in function name.
captainsac
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.