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

String Format Tanggal/Waktu Kustom Didukung oleh FORMAT() di SQL Server

Artikel ini memberikan referensi untuk penentu format tanggal dan waktu khusus yang dapat digunakan saat memformat tanggal dan/atau waktu menggunakan FORMAT() fungsi di SQL Server, bersama dengan contoh.

Anda dapat menggabungkan salah satu penentu format ini untuk menghasilkan string format yang disesuaikan. Lihat di bawah untuk contoh kode dan penjelasan tentang cara kerja string format khusus.

Contoh dalam tabel mengasumsikan datetimeoffset nilai 2080-05-01 23:09:08.1234567 +07:00 .

Format String Deskripsi Contoh
d Hari dalam sebulan, dari tanggal 1 hingga 31. 1
dd Hari dalam sebulan, dari 01 hingga 31. 01
ddd Nama singkat dari hari dalam seminggu. Rabu
dddd Nama lengkap hari dalam seminggu. Rabu
f Sepersepuluh detik dalam nilai tanggal dan waktu. 1
ff Perseratus detik dalam nilai tanggal dan waktu. 12
fff Milidetik dalam nilai tanggal dan waktu. 123
ffff Seperseribu detik dalam nilai tanggal dan waktu. 1234
fffff Seratus seperseribu detik dalam nilai tanggal dan waktu. 12345
ffffff Sepersejuta detik dalam nilai tanggal dan waktu. 123456
fffffff Sepuluh juta detik dalam nilai tanggal dan waktu. 1234567
F Jika bukan nol, sepersepuluh detik dalam nilai tanggal dan waktu. 1
FF Jika bukan nol, seperseratus detik dalam nilai tanggal dan waktu. 12
FFF Jika bukan nol, milidetik dalam nilai tanggal dan waktu. 123
FFFF Jika bukan nol, seperseribu detik dalam nilai tanggal dan waktu. 1234
FFFFF Jika bukan nol, seperseribu detik dalam nilai tanggal dan waktu. 12345
FFFFFF Jika bukan nol, sepersejuta detik dalam nilai tanggal dan waktu. 123456
FFFFFFF Jika bukan nol, sepersejuta detik dalam nilai tanggal dan waktu. 1234567
g Masa atau era. M.
gg Masa atau era. M.
h Jam, menggunakan jam 12 jam dari 1 hingga 12. 11
hh Jam, menggunakan jam 12 jam dari 01 hingga 12. 11
H Jam, menggunakan waktu 24 jam dari 0 hingga 23. 23
HH Jam, menggunakan jam 24 jam dari 00 hingga 23. 23
K Informasi zona waktu. +07:00
m Menit, dari 0 hingga 59. 9
mm Menit, dari 00 hingga 59. 09
M Bulan, dari 1 sampai 12. 5
MM Bulan, dari 01 sampai 12. 05
MMM Nama bulan yang disingkat. Mei
MMMM Nama lengkap bulan tersebut. Mei
s Yang kedua, dari 0 sampai 59. 8
ss Yang kedua, dari 00 hingga 59. 08
t Karakter pertama penanda AM/PM. P
tt Penanda AM/PM. PM
y Tahun, dari 0 sampai 99. 80
yy Tahun, dari 00 hingga 99. 80
yyy Tahun, dengan minimal tiga digit. 2080
yyyy Tahun sebagai angka empat digit. 2080
yyyyy Tahun sebagai angka lima digit. 02080
z Jam diimbangi dari UTC, tanpa nol di depan. +7
zz Jam diimbangi dari UTC, dengan nol di depan untuk nilai satu digit. +07
zzz Jam dan menit diimbangi dari UTC. +07:00
: Pemisah waktu. :
/ Pemisah tanggal. /
"string" Pembatas string literal. string
% Mendefinisikan karakter berikut sebagai penentu format khusus.
\ Karakter pelarian.

Setiap karakter lain disalin ke string hasil tidak berubah.

Penting: Saat menggunakan string format khusus karakter tunggal, Anda harus menambahkannya dengan tanda persentase (% ). Atau, Anda dapat menambahkan spasi. Jika Anda tidak melakukan ini, Anda akan mendapatkan NULL, atau penentu format dapat diartikan sebagai penentu format standar, dan Anda akan mendapatkan hasil yang tidak diinginkan.

Apa itu String Format Kustom?

String format kustom terdiri dari satu atau beberapa penentu format kustom. Tabel di atas mencantumkan penentu format khusus yang tersedia untuk memformat nilai tanggal dan waktu ke dalam string.

Ada juga string format tanggal dan waktu standar. Masing-masing adalah alias untuk string format khusus. String format standar terdiri dari penentu format tunggal, sehingga lebih cepat digunakan (tetapi kurang fleksibel dibandingkan string format khusus).

String format apa pun yang bukan string format tanggal dan waktu standar ditafsirkan sebagai string format tanggal dan waktu khusus.

Contoh Penggunaan

Cara kerja penentu format khusus, adalah Anda dapat menggabungkannya bersama untuk membentuk string format khusus saat menggunakan FORMAT() fungsi. Ini menentukan bagaimana hasilnya diformat.

Berikut beberapa contohnya:

DECLARE @date datetimeoffset;
SET @date = '2080-05-01 23:09:08.1234567 +07:00';
SELECT 
  FORMAT(@date, 'd, MMM yy') AS 'd, MMM yy',
  FORMAT(@date, 'dd, MMMM yyyy') AS 'dd, MMMM yyyy',
  FORMAT(@date, 'dddd, MMM dd yyyy') AS 'dddd, MMM dd yyyy',
  FORMAT(@date, 'hh:mm:ss') AS 'hh:mm:ss',
  FORMAT(@date, 'hh:mm tt') AS 'hh:mm tt';

Hasil:

+-------------+-----------------+------------------------+------------+------------+
| d, MMM yy   | dd, MMMM yyyy   | dddd, MMM dd yyyy      | hh:mm:ss   | hh:mm tt   |
|-------------+-----------------+------------------------+------------+------------|
| 1, May 80   | 01, May 2080    | Wednesday, May 01 2080 | 11:09:08   | 11:09 PM   |
+-------------+-----------------+------------------------+------------+------------+

Jadi ini memungkinkan banyak fleksibilitas dalam cara Anda menyajikan tanggal dan waktu Anda.

Berikut adalah contoh penggunaan string format yang terdiri dari penentu format tunggal.

DECLARE @date datetimeoffset;
SET @date = '2080-05-01 23:09:08.1234567 +07:00';
SELECT 
  FORMAT(@date, '%d') AS '%d',
  FORMAT(@date, '%M') AS '%M',
  FORMAT(@date, '%K') AS '%K',
  FORMAT(@date, '%z') AS '%z';

Hasil:

+------+------+--------+------+
| %d   | %M   | %K     | %z   |
|------+------+--------+------|
| 1    | 5    | +07:00 | +7   |
+------+------+--------+------+

Seperti yang disebutkan, Anda harus menambahkan ini dengan tanda persentase untuk menghindari NULL dan agar penentu format tidak secara tidak sengaja ditafsirkan sebagai string format standar.

Inilah yang terjadi jika saya menghapus tanda persentase dari contoh sebelumnya:

DECLARE @date datetimeoffset;
SET @date = '2080-05-01 23:09:08.1234567 +07:00';
SELECT 
  FORMAT(@date, 'd') AS 'd',
  FORMAT(@date, 'M') AS 'M',
  FORMAT(@date, 'K') AS 'K',
  FORMAT(@date, 'z') AS 'z';

Hasil:

+----------+-------+------+------+
| d        | M     | K    | z    |
|----------+-------+------+------|
| 5/1/2080 | May 1 | NULL | NULL |
+----------+-------+------+------+

Kami mendapatkan hasil yang sama sekali berbeda.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. database terlampir hanya baca

  2. cara yang efisien untuk mengimplementasikan paging

  3. Cara membuat pekerjaan di edisi SQL Server Express

  4. Cara membuat kueri pivot di server sql tanpa fungsi agregat

  5. Menjalankan prosedur tersimpan yang dijadwalkan pada SQL server