Apakah ada cara untuk membandingkan dua DateTime
variabel Linq2Sql
tetapi untuk mengabaikan bagian Waktu.
Aplikasi menyimpan item dalam DB dan menambahkan tanggal yang dipublikasikan. Saya ingin menyimpan waktu yang tepat tetapi masih bisa menarik berdasarkan tanggal itu sendiri.
Saya ingin membandingkan 12/3/89 12:43:34
dan 12/3/89 11:22:12
membiarkannya mengabaikan waktu hari itu sehingga keduanya dianggap sama.
Saya kira saya dapat mengatur semua waktu sehari 00:00:00
sebelum saya membandingkan tetapi saya sebenarnya ingin tahu waktu hari saya hanya ingin dapat membandingkan berdasarkan tanggal saja.
Saya menemukan beberapa kode yang memiliki masalah yang sama dan mereka membandingkan tahun, bulan, dan hari secara terpisah. Apakah ada cara yang lebih baik untuk melakukan ini?
sumber
Untuk perbandingan yang benar, Anda dapat menggunakan:
sumber
-1
,0
dan1
, sungguh? Mereka hanya angka ajaib yang mewakili "kurang", "sama" dan "lebih besar". Dan Anda harus "membandingkan" bilangan bulat yang dihasilkan dengan sesuatu setelahnya karena ada tiga nilai yang mungkin. Saya harus setuju dengan @David bahwa itu jauh lebih alami untuk digunakandateTime1.Date < dateTime1.Date
, dan juga dengan<=
,>
dan>=
, di sebagian besar aplikasi.Ini adalah bagaimana saya melakukan ini untuk bekerja dengan LINQ.
Jika Anda hanya menggunakannya,
dtOne.Date == dtTwo.Date
ia tidak akan berfungsi dengan LINQ (Galat: Anggota tipe tertentu 'Tanggal' tidak didukung di LINQ untuk Entitas)sumber
EntityFunctions
telah usang dalam .NET 4.5.2. Gunakan ini sebagai gantinya:DbFunctions.TruncateTime
. Tampaknya metode yang identik, baru saja pindah ..Jika Anda menggunakan Entity Framework <v6.0, maka gunakan
EntityFunctions.TruncateTime
Jika Anda menggunakan Entity Framework> = v6.0, maka gunakanDbFunctions.TruncateTime
Gunakan salah satu (berdasarkan versi EF Anda) di sekitar
DateTime
properti kelas apa pun yang ingin Anda gunakan di dalam kueri Linq AndaContoh
sumber
sumber
Anda dapat menggunakan ini jika Anda menggunakan DateFields yang dapat dibatalkan.
sumber
sumber
Nilai diff menunjukkan jumlah hari untuk usia. Jika nilainya negatif tanggal mulai turun setelah tanggal akhir. Ini cek yang bagus.
sumber
Anda dapat menggunakan Equals atau CompareTo .
Setara : Mengembalikan nilai yang menunjukkan apakah dua instance DateTime memiliki nilai tanggal dan waktu yang sama.
CompareTo Nilai Pengembalian :
DateTime tidak dapat dibatalkan:
atau
DateTime tidak dapat dibatalkan:
atau
sumber
Di gabung Anda atau di mana klausa, gunakan
Date
properti kolom. Di belakang layar, ini menjalankanCONVERT(DATE, <expression>)
operasi. Ini akan memungkinkan Anda untuk membandingkan tanggal tanpa waktu.sumber
Anda dapat mencoba
sumber
sumber