Di SQL Server, Anda dapat menggunakan menggunakan CONVERT()
berfungsi untuk mengonversi nilai tanggal dari satu tipe data tanggal ke tipe data lainnya (atau antara tipe data lainnya dalam hal ini). Namun, itu bukan satu-satunya fungsi di kotak alat T-SQL untuk mengonversi antar tipe data.
CAST()
function adalah bagian dari standar SQL ANSI, dan melakukan sebagian besar hal CONVERT()
melakukan. Jadi, dalam banyak kasus, Anda memiliki pilihan fungsi mana yang ingin Anda gunakan.
Banyak profesional database lebih memilih CAST()
karena fakta bahwa itu adalah bagian dari standar SQL ANSI, namun, yang lain lebih suka CONVERT()
karena fungsionalitas ekstra yang ditawarkan implementasi T-SQL (seperti kemampuan memberikan gaya tanggal).
Bagaimanapun, artikel ini memberikan contoh konversi antara format tanggal yang berbeda menggunakan CAST()
.
Sintaks
Sintaksnya seperti ini:
CAST ( expression AS data_type [ ( length ) ] )
Argumen ini didefinisikan sebagai berikut:
expression
- Ekspresi apa pun yang valid.
data_type
- Tipe data target. Ini termasuk xml , besar , dan sql_variant . Tipe data alias tidak dapat digunakan.
length
- Integer opsional yang menentukan panjang tipe data target. Nilai defaultnya adalah
30
.
Contoh 1 – Keluarkan SYSDATETIME() sebagai tanggal
Dalam contoh ini, kami membuat tanggal/waktu saat ini dengan SYSDATETIME()
fungsi dan berikan nilai yang dikembalikan sebagai tanggal tipe data.
Perhatikan bahwa SYSDATETIME()
menghasilkan nilainya sebagai datetime2(7) tipe data, jadi kami mengonversinya dari tipe data tersebut ke tipe data lain.
SELECT SYSDATETIME() AS Original, CAST(SYSDATETIME() AS date) AS Converted;
Hasil:
+-----------------------------+-------------+ | Original | Converted | |-----------------------------+-------------| | 2018-06-07 00:15:32.9265884 | 2018-06-07 | +-----------------------------+-------------+
Contoh 2 – Cast SYSDATETIME() sebagai smalldatetime
Dalam contoh ini, kami memasukkan tanggal sebagai waktu kecil tipe data.
SELECT SYSDATETIME() AS Original, CAST(SYSDATETIME() AS smalldatetime) AS Converted;
Hasil:
+-----------------------------+---------------------+ | Original | Converted | |-----------------------------+---------------------| | 2018-06-07 00:16:05.5142017 | 2018-06-07 00:16:00 | +-----------------------------+---------------------+
Contoh 3 – Keluarkan SYSDATETIME() sebagai datetimeoffset
Dalam contoh ini, kami memberikan tanggal sebagai datetimeoffset tipe data.
SELECT SYSDATETIME() AS Original, CAST(SYSDATETIME() AS datetimeoffset) AS Converted;
Hasil:
+-----------------------------+------------------------------------+ | Original | Converted | |-----------------------------+------------------------------------| | 2018-06-07 10:19:23.9457462 | 2018-06-07 10:19:23.9457462 +00:00 | +-----------------------------+------------------------------------+
Contoh 4 – Keluarkan SYSDATETIME() sebagai waktu
Anda tidak dibatasi untuk menampilkan komponen tanggal dari nilai. Anda juga dapat mentransmisikannya sebagai waktu tipe data, sehingga hanya komponen waktu yang dikembalikan. Seperti ini:
SELECT SYSDATETIME() AS Original, CAST(SYSDATETIME() AS time) AS Converted;
Hasil:
+-----------------------------+------------------+ | Original | Converted | |-----------------------------+------------------| | 2018-06-07 00:20:21.5829364 | 00:20:21.5829364 | +-----------------------------+------------------+
Contoh 5 – Keluarkan SYSDATETIMEOFFSET() sebagai tanggal
Berikut ini contoh penggunaan fungsi yang berbeda untuk menghasilkan nilai tanggal/waktu asli:
SELECT SYSDATETIMEOFFSET() AS Original, CAST(SYSDATETIMEOFFSET() AS date) AS Converted;
Hasil:
+------------------------------------+----------------------+ | Original | Converted | |------------------------------------+----------------------| | 2018-06-07 10:21:16.3617030 +10:00 | 2018-06-07 | +------------------------------------+----------------------+
Contoh 6 – Mengonversi dari Kueri Basis Data
Berikut adalah contoh mengonversi tanggal yang diambil dari kolom di WideWorldImporters contoh database:
USE WideWorldImporters; SELECT DISTINCT TOP 10 LastEditedWhen, CAST(LastEditedWhen AS date) AS 'Converted' FROM Sales.CustomerTransactions;
Hasil:
+-----------------------------+-------------+ | LastEditedWhen | Converted | |-----------------------------+-------------| | 2013-01-02 11:30:00.0000000 | 2013-01-02 | | 2013-01-03 11:30:00.0000000 | 2013-01-03 | | 2013-01-04 11:30:00.0000000 | 2013-01-04 | | 2013-01-05 11:30:00.0000000 | 2013-01-05 | | 2013-01-06 11:30:00.0000000 | 2013-01-06 | | 2013-01-08 11:30:00.0000000 | 2013-01-08 | | 2013-01-09 11:30:00.0000000 | 2013-01-09 | | 2013-01-10 11:30:00.0000000 | 2013-01-10 | | 2013-01-11 11:30:00.0000000 | 2013-01-11 | | 2013-01-12 11:30:00.0000000 | 2013-01-12 | +-----------------------------+-------------+
Saya juga telah menulis posting yang menunjukkan cara mengonversi antara format tanggal menggunakan CONVERT()
fungsi menggunakan contoh yang sama seperti di atas.