Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Menambahkan AM/PM ke Nilai Waktu di SQL Server (T-SQL)

Di SQL Server, Anda dapat menggunakan T-SQL FORMAT() berfungsi untuk memformat waktu tipe data. Namun, jika Anda perlu menambahkan penanda AM/PM, Anda harus menggunakan tipe data yang berbeda. Ini karena waktu tipe data secara khusus didasarkan pada jam 24 jam, dan oleh karena itu waktu diformat seperti itu.

Contoh 1 – Membandingkan 'waktu' dengan 'datetime'

Berikut ini contoh untuk menunjukkan apa yang terjadi jika Anda mencoba memformat tipe data 'waktu' dengan penanda AM/PM:

SELECT 
  FORMAT(CAST('11:28:15' AS datetime), 'hh:mm tt') 'datetime',
  FORMAT(CAST('11:28:15' AS time), 'hh\:mm tt') 'time';

Hasil:

+------------+--------+
| datetime   | time   |
|------------+--------|
| 11:28 AM   | NULL   |
+------------+--------+

Jika Anda mencoba menambahkan penanda AM/PM ke nilai 'waktu', Anda akan mendapatkan NULL .

Oleh karena itu, jika Anda perlu menambahkan AM atau PM ke tipe data waktu, Anda harus mengonversinya ke tipe data lain terlebih dahulu, lalu memformatnya.

Perhatikan bahwa FORMAT() fungsi sebenarnya mengembalikan hasilnya sebagai string (kecuali hasilnya NULL ).

Jika Anda bertanya-tanya mengapa ada garis miring terbalik di string format kedua, ini hanya diperlukan untuk waktu tipe data, dan digunakan untuk keluar dari titik dua (dan titik apa pun). Selengkapnya tentang itu di sini.

Contoh 2 – Mengubah 'waktu' menjadi 'waktu-tanggal'

Contoh ini hampir identik dengan contoh sebelumnya, kecuali saya mencoba membuatnya lebih realistis. Dalam hal ini, saya secara eksplisit menetapkan variabel sebagai tipe data 'waktu' dan kemudian mencoba memformatnya. Saya kemudian mentransmisikannya sebagai 'datetime' sebelum memformatnya lagi.

DECLARE @thetime time = '11:28:15'
SELECT 
  FORMAT(@thetime, 'hh\:mm tt') 'time',
  FORMAT(CAST(@thetime AS datetime), 'hh:mm tt') 'datetime';

Hasil:

+--------+------------+
| time   | datetime   |
|--------+------------|
| NULL   | 11:28 AM   |
+--------+------------+

Jika Anda lebih suka menggunakan CONVERT() fungsi, inilah yang akan terlihat seperti:

DECLARE @thetime time = '11:28:15'
SELECT 
  FORMAT(@thetime, 'hh\:mm tt') 'time',
  FORMAT(CONVERT(datetime, @thetime), 'hh:mm tt') 'datetime';

Hasil:

+--------+------------+
| time   | datetime   |
|--------+------------|
| NULL   | 11:28 AM   |
+--------+------------+

Atau Anda bisa menetapkan kembali nilai ke variabel lain dari jenis yang diinginkan:

DECLARE @thetime time = '11:28:15'
DECLARE @thedatetime datetime = @thetime
SELECT 
  FORMAT(@thetime, 'hh\:mm tt') 'time',
  FORMAT(@thedatetime, 'hh:mm tt') 'datetime';

Hasil:

+--------+------------+
| time   | datetime   |
|--------+------------|
| NULL   | 11:28 AM   |
+--------+------------+

Contoh 3 – Penanda AM/PM Satu Huruf

Anda juga dapat menggunakan satu t untuk menentukan satu huruf AM/PM penanda:

SELECT 
  FORMAT(CAST('11:28:15' AS datetime), 'hh:mm t') 'AM',
  FORMAT(CAST('23:28:15' AS datetime), 'hh:mm t') 'PM';

Hasil:

+---------+---------+
| AM      | PM      |
|---------+---------|
| 11:28 A | 11:28 P |
+---------+---------+

Contoh 4 – Tanpa menggunakan Fungsi FORMAT()

FORMAT() fungsi diperkenalkan di SQL Server 2012. Jika Anda menggunakan versi SQL Server yang lebih lama, Anda harus menggunakan metode yang berbeda untuk menambahkan penanda AM/PM. Inilah salah satu cara Anda dapat melakukannya:

DECLARE @thetime time
SET @thetime = '11:28:15'
SELECT CONVERT(varchar(8), @thetime, 100) Result;

Hasil:

+----------+
| Result   |
|----------|
| 11:28AM  |
+----------+

Atau, Anda dapat menggunakan ganti 100 dengan 0 untuk hasil yang sama:

DECLARE @thetime time
SET @thetime = '11:28:15'
SELECT CONVERT(varchar(8), @thetime, 0) Result;

Hasil:

+----------+
| Result   |
|----------|
| 11:28AM  |
+----------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Migrasi Cloud 101:Pindah dari SQL Server ke Azure

  2. SSMS Kini Hadir dengan Azure Data Studio

  3. Mensimulasikan fungsi group_concat MySQL di Microsoft SQL Server 2005?

  4. Memahami Penganalisis Beban Kerja untuk Memetakan Kemacetan Kinerja

  5. Tidak dapat terhubung ke SQL Server dengan PHP