Saya mengerjakan kueri di Sql Server 2005 di mana saya perlu mengubah nilai dalam DateTime
variabel menjadi varchar
variabel dalam yyyy-mm-dd
format (tanpa bagian waktu). Bagaimana aku melakukan itu?
303
Saya mengerjakan kueri di Sql Server 2005 di mana saya perlu mengubah nilai dalam DateTime
variabel menjadi varchar
variabel dalam yyyy-mm-dd
format (tanpa bagian waktu). Bagaimana aku melakukan itu?
CONVERT
, lihat dokumentasi MSDN .Jawaban:
Dengan Microsoft Sql Server:
sumber
LEFT(.., 10)
bukanCONVERT(CHAR(10), ...)
? Mereka yang bekerja dengan versi SQL Server yang lebih baru dari 2005 (!) Harus memeriksa jawabannya oleh Zar Shardan menyarankan solusi berdasarkan padaFORMAT(date_value, format_string)
fungsi.FORMAT()
relatif terlalu lambat untukconvert(char(10),...)
Inilah beberapa sql uji untuk semua gaya.
Inilah hasilnya
Buat
nvarchar(max)
lebih pendek untuk mengurangi waktu. Sebagai contoh:output:
sumber
dd-mm
ataujun - 28
. Ada pilihan ??Coba yang berikut ini:
Untuk waktu tanggal penuh dan bukan hanya tanggal, lakukan:
Lihat halaman ini untuk gaya konversi:
http://msdn.microsoft.com/en-us/library/ms187928.aspx
ATAU
SQL Server CONVERT () Fungsi
sumber
SQL Server 2012 memiliki fungsi baru, FORMAT: http://msdn.microsoft.com/en-us/library/ee634924.aspx
dan Anda dapat menggunakan string format waktu tanggal khusus: http://msdn.microsoft.com/en-us/library/ee634398.aspx
Halaman-halaman ini menyiratkan itu juga tersedia di SQL2008R2, tapi saya tidak punya satu berguna untuk menguji apakah itu masalahnya.
Contoh penggunaan (waktu Australia):
sumber
Anda bisa menggunakannya
DATEPART(DATEPART, VARIABLE)
. Sebagai contoh:sumber
Salah satu
Cast
atauConvert
:Sintaks untuk
CAST
:Sintaks untuk
CONVERT
:http://msdn.microsoft.com/en-us/library/ms187928.aspx
Sebenarnya karena Anda meminta format tertentu:
sumber
- Ini memberi Anda waktu sebagai 0 dalam format 'yyyy-mm-dd 00: 00: 00.000'
sumber
Dengan Microsoft SQL Server:
Gunakan Sintaks untuk CONVERT:
Contoh:
Untuk gaya Anda dapat menemukan info lebih lanjut di sini: MSDN - Cast and Convert (Transact-SQL) .
sumber
Mencoba:
Lebih lanjut tentang ms sql tips
sumber
Coba yang berikut ini:
Maka Anda perlu mengganti "." dengan "-".
Berikut adalah situs yang membantu http://www.mssqltips.com/tip.asp?tip=1145
sumber
Saya memiliki panjang data tetap
char(10)
seperti yang Anda inginkan format string tertentu.sumber
OP menyebutkan format datetime . Bagi saya, bagian waktu menghalangi.
Saya pikir itu sedikit lebih bersih untuk menghapus bagian waktu (dengan casting datetime to date) sebelum memformat.
sumber
Beginilah cara saya melakukannya:
CONVERT(NVARCHAR(10), DATE1, 103) )
sumber
Anda dapat mengonversi tanggal Anda dalam banyak format, sintaksisnya mudah digunakan:
Dalam kasus Anda , saya baru saja mengonversi dan membatasi ukuran dengan nvarchar (10) seperti ini:
Lihat lebih lanjut di: http://www.w3schools.com/sql/func_convert.asp
Solusi lain (jika teman kencan Anda adalah Datetime) adalah CAST sederhana :
sumber
Coba SQL ini:
sumber
Untuk SQL Server 2008+ Anda dapat menggunakan CONVERT dan FORMAT secara bersamaan.
Misalnya, untuk cap waktu gaya Eropa (misalnya Jerman):
sumber
Anda tidak mengatakan basis data mana, tetapi dengan mysql di sini adalah cara mudah untuk mendapatkan tanggal dari cap waktu (dan konversi tipe varchar akan terjadi secara otomatis):
sumber
Cara terpendek dan paling sederhana adalah:
sumber
sumber
sumber
Tulis fungsi
sumber
akan memberi
05/05/2020 10:41:05 AM
hasilnyasumber
Anda tidak mengatakan bahasa apa tetapi saya berasumsi
C#/.NET
karena ini memilikiDateTime
tipe data asli . Dalam hal itu, konversikan saja menggunakanToString
metode dan gunakan specifier format seperti:Namun, saya akan berhati-hati agar tidak menggunakan ini dalam permintaan basis data atau digabungkan menjadi pernyataan SQL. Database membutuhkan string pemformatan khusus untuk digunakan. Anda lebih baik menunjukkan bagian waktu dan menggunakan DateTime sebagai parameter SQL jika itu yang ingin Anda capai.
sumber