Bagaimana cara mengambil tanggal dari SQL Server dalam YYYY-MM-DD
format? Saya perlu ini untuk bekerja dengan SQL Server 2000 dan lebih tinggi. Apakah ada cara sederhana untuk melakukan ini di SQL Server atau akan lebih mudah untuk mengubahnya secara terprogram setelah saya mengambil set hasil?
Saya telah membaca CAST dan CONVERT di Microsoft Technet, tetapi format yang saya inginkan tidak tercantum dan mengubah format tanggal bukanlah suatu pilihan.
sql-server
tsql
Kinze
sumber
sumber
Jawaban:
Membatasi ukuran potongan varchar dari porsi jam yang tidak Anda inginkan.
sumber
sumber
Dimulai dengan SQL Server 2012 (pertanyaan awal untuk tahun 2000):
SELECT FORMAT(GetDate(), 'yyyy-MM-dd')
sumber
Formulir yang Anda cari tercantum dalam dokumentasi buku online.
http://msdn.microsoft.com/en-us/library/aa226054(SQL.80).aspx
Misalnya, coba yang berikut ini:
sumber
The
convert
fungsi dengan format specifier 120 akan memberikan format "yyyy-MM-dd HH: mm: ss", sehingga Anda hanya perlu membatasi panjang untuk 10 untuk mendapatkan hanya bagian tanggal:Namun, memformat tanggal umumnya lebih baik dilakukan di lapisan presentasi daripada di database atau lapisan bisnis. Jika Anda mengembalikan tanggal yang diformat dari database, maka kode klien harus menguraikannya ke tanggal lagi jika perlu melakukan perhitungan apa pun di dalamnya.
Contoh dalam C #:
sumber
Untuk YYYYMMDD coba
Saya hanya diuji pada SQLServer2008.
sumber
Cara lain ...
sumber
Bagi mereka yang menginginkan bagian waktu juga (saya lakukan), cuplikan berikut dapat membantu
sumber
Juga akan melakukan trik tanpa "memotong apa pun".
sumber
Jika seseorang ingin melakukannya sebaliknya dan menemukan ini.
Ini mengonversi string dalam format tanggal Jerman ke objek datetime.
Kenapa harus 104? Lihat di sini: http://msdn.microsoft.com/en-us/library/ms187928.aspx
sumber
Dalam tautan pemeran dan konversi Anda, gunakan gaya 126 dengan demikian:
CONVERT (varchar(10), DTvalue, 126)
Ini memotong waktu. Persyaratan Anda untuk memilikinya dalam yyyy-mm-dd berarti itu harus berupa tipe data string dan datetime.
Terus terang, saya akan melakukannya pada klien kecuali Anda punya alasan kuat untuk tidak melakukannya.
sumber
Jika Anda ingin menggunakannya sebagai tanggal alih-alih
varchar
setelahnya, jangan lupa untuk mengubahnya kembali:sumber
Saya tidak yakin mengapa cara paling sederhana telah diabaikan / dihilangkan dalam jawaban di atas:
Saya lebih suka yang kedua karena bahasa apa pun yang Anda gunakan, Anda akan mengerti tanggal berapa itu!
Juga SQL Server selalu 'memahaminya' ketika Anda mengirimkannya ke prosedur penyimpanan Anda, terlepas dari format regional mana yang ditetapkan di komputer - Saya selalu menggunakan tahun penuh (yyyy), nama bulan (MMM) dan format 24 jam (modal HH) selama satu jam dalam pemrograman saya.
sumber
SELECT CONVERT(NVARCHAR(20), GETDATE(), 23)
sumber
Anda juga dapat menggunakan. Ini dengan menggunakan tipe data baru
DATE
. Mungkin tidak berfungsi di semua versi sebelumnya, tetapi sangat disederhanakan untuk digunakan di versi yang lebih baru.sumber
Saya akan menggunakan:
sumber
sumber
Dari SQL Server 2008 Anda dapat melakukan ini:
CONVERT(date,getdate())
sumber
Tampaknya tidak perlu melakukan hal-hal aneh, jika Anda ingin pasangan Anda dipisahkan oleh garis miring. Hanya menghindarinya dengan backslash. Kalau tidak, Anda akan berakhir dengan sebuah titik.
Diuji pada SQL Server 2016
sumber
Menggunakan pernyataan CASE untuk masing-masing fungsi convert / cast selalu berfungsi untuk saya:
Semoga ini bermanfaat. Chagbert.
sumber
Solusi ini berfungsi untuk saya, sederhana dan efektif (dengan 126 juga)
sumber
Jika format tanggal sumber Anda kacau, cobalah sesuatu seperti:
sumber
sumber