Terkadang saat bekerja dengan database dan lingkungan pemrograman lainnya, Anda mendapatkan nilai tanggal tetapi dalam format/tipe data yang salah. Misalnya, jika tanggal telah dibuat dengan fungsi tanggal bawaan, itu mungkin menyertakan tanggal dan waktu, hingga nanodetik terakhir. Dan yang Anda inginkan hanyalah hari, bulan, dan tahun, katakan seperti ini:01-01-2018.
Jika ini terjadi saat Anda menggunakan SQL Server, Anda dapat menggunakan CONVERT()
berfungsi untuk mengubahnya menjadi tipe data lain. Saat Anda melakukan ini, tipe data akan menentukan format tampilannya.
Artikel ini memberikan contoh penggunaan CONVERT()
fungsi di SQL Server untuk mengonversi nilai tanggal ke tipe data (tanggal) lain.
Sintaks
Pertama, beginilah sintaks resminya:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
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
. style
- Sebuah ekspresi integer yang menentukan bagaimana
CONVERT()
fungsi akan menerjemahkan ekspresi . Untuk nilai gaya NULL, NULL dikembalikan. tipe_data menentukan jangkauan.
Contoh 1 – Konversi dari SYSDATETIME() ke Tipe Data saat ini
Dalam contoh ini, kami membuat tanggal/waktu saat ini dengan SYSDATETIME()
fungsi dan ubah itu menjadi 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, CONVERT(date, SYSDATETIME()) AS Converted;
Hasil:
+-----------------------------+-------------+ | Original | Converted | |-----------------------------+-------------| | 2018-06-06 22:53:47.2318751 | 2018-06-06 | +-----------------------------+-------------+
Contoh 2 – Konversi dari SYSDATETIME() ke Smalldatetime Tipe Data
Dalam contoh ini, kami mengonversi tanggal menjadi waktu kecil tipe data.
SELECT SYSDATETIME() AS Original, CONVERT(smalldatetime, SYSDATETIME()) AS Converted;
Hasil:
+-----------------------------+---------------------+ | Original | Converted | |-----------------------------+---------------------| | 2018-06-06 22:56:51.6873250 | 2018-06-06 22:57:00 | +-----------------------------+---------------------+
Contoh 3 – Konversi dari SYSDATETIME() ke Tipe Data datetimeoffset
Dalam contoh ini, kami mengonversi tanggal menjadi datetimeoffset tipe data.
SELECT SYSDATETIME() AS Original, CONVERT(datetimeoffset, SYSDATETIME()) AS Converted;
Hasil:
+-----------------------------+------------------------------------+ | Original | Converted | |-----------------------------+------------------------------------| | 2018-06-07 09:17:15.2410693 | 2018-06-07 09:17:15.2410693 +00:00 | +-----------------------------+------------------------------------+
Contoh 4 – Konversi dari SYSDATETIME() ke Tipe Data waktu
Anda tidak dibatasi untuk menampilkan komponen tanggal dari nilai. Anda juga dapat mengubahnya menjadi waktu tipe data, sehingga hanya komponen waktu yang dikembalikan. Seperti ini:
SELECT SYSDATETIME() AS Original, CONVERT(time, SYSDATETIME()) AS Converted;
Hasil:
+-----------------------------+------------------+ | Original | Converted | |-----------------------------+------------------| | 2018-06-06 23:01:41.7070775 | 23:01:41.7070775 | +-----------------------------+------------------+
Contoh 5 – Konversi dari SYSDATETIMEOFFSET()
Contoh sebelumnya semuanya menggunakan fungsi bawaan yang sama untuk menghasilkan nilai tanggal/waktu, tetapi tentu saja, itu tidak perlu dibuat oleh fungsi yang satu ini. Berikut ini contoh menggunakan SYSDATETIMEOFFSET()
:
SELECT SYSDATETIMEOFFSET() AS Original, CONVERT(date, SYSDATETIMEOFFSET()) AS Converted;
Hasil:
+------------------------------------+----------------------+ | Original | Converted | |------------------------------------+----------------------| | 2018-06-07 09:12:27.3660685 +10:00 | 2018-06-07 | +------------------------------------+----------------------+
Contoh 6 – Konversi dari Kueri Basis Data
Berikut adalah contoh mengonversi tanggal yang diambil dari kolom di database sampel WideWorldImporters:
USE WideWorldImporters; SELECT DISTINCT TOP 10 LastEditedWhen, CONVERT(date, LastEditedWhen) 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 | +-----------------------------+-------------+
Perhatikan bahwa Anda tidak terbatas hanya mengonversi antara dua format tanggal yang berbeda. Jika Anda memiliki tanggal yang disimpan sebagai string misalnya, Anda juga dapat menggunakan CONVERT()
untuk mengonversi dari string ke tanggal, serta tipe data lain yang mungkin perlu Anda konversi.
Saya juga telah menulis posting yang menunjukkan cara mengonversi antara format tanggal menggunakan CAST()
fungsi menggunakan contoh yang sama seperti di atas.