Sepotong kode berikut mengembalikan 1900-01-01 ketika bidang DOB adalah nol. Saya ingin (dan berharap) mengembalikan string kosong ('') tetapi tidak. Bagaimana saya melanjutkan untuk mendapatkan hasil yang saya inginkan?
isnull(convert(date,DOB,1),'')
sql-server
sql-server-2012
datetime
Juan Velez
sumber
sumber
NULL
kencan katakanSELECT CAST('' AS DATE)
. Apa tipe data ituDOB
?Jawaban:
Anda tidak bisa mendapatkan string kosong karena Anda mengembalikan
DATE
tipe nilai dariISNULL
.Per MSDN ,
ISNULL
Jika Anda memeriksa apakah nilainya atau tidak
NULL
, tidak perlu mengubahnya menjadi tanggal, kecuali jika Anda ingin mengembalikan nilai tanggal (yang tampaknya tidak Anda lakukan).Sebaliknya, gunakan:
Yang akan kembali
jika nilainya
NULL
.Sebuah
NULL
saat ini adalahNULL
(tidak ada nilai). Sebuah string kosong, di sisi lain, mengevaluasi0
, yang dalam SQL Server secara implisit merupakan bilangan bulat yang mewakili jumlah hari sejak itu1900-01-01
.sumber
Jika Anda ingin mengembalikan nilai untuk DOB ketika sudah terisi dan hapus nilai nol ketika tidak ada DOB yang terisi. Anda dapat mencoba ini, tetapi DOB akan menjadi varchar dan bukan tipe tanggal.
sumber
VARCHAR
keDATE
dan kembali keVARCHAR
tidak masuk akal. Ketika Anda menghapus omong kosong itu, jawaban Anda sama dengan jawaban yang diterima dengan sedikit eksposisi.datetime
tanggal dan hanya perlu tanggalYYYY-MM-DD
. Jadi dengan casting saatdate
saya menjatuhkan waktu. Kemudian castingvarchar
memungkinkan untuk penggunaanisnull
fungsi. Jadi saya masih mendapatkan tanggal untuk catatan yang terisi dan menghapus nilai nol. Kalau tidak, aku akan mendapatkannya1900-01-01 00:00:00.000
.Ini akan mengonversi tanggal NULL menjadi spasi. Lapisan aplikasi (Excel) menangani ruang halus
sumber
Cukup buat tampilan
CREATE VIEW test_view
SEBAGAI
SELECT kasus ketika tahun (DOB) <= 1900 maka nol DOB lain berakhir sebagai DOB, kadang-kadang, id dari tes;
dan kemudian gunakan tabel itu sebagai gantinya: pilih * dari test_view
sumber
menggunakan
pilih isnull (Konversi (Varchar (500), Tanggal, 106), '')
bekerja
sumber