2010-11-02 9 views
6

SqlCommand örneğime parametre olarak eklemeden önce bir System.DateTime değerini doğrulamak istiyorum.SqlDbType.DateTime alanı içinde olması gereken bir tarih doğrulanıyor

SqlDbType sayımı için MSDN belgelerine diyor:

Tarih ve saat verisi 3.33 milisaniye bir doğrulukla 31 Aralık 9999 1 Ocak 1753 den değeri arasında değişen.

, ben

public readonly DateTime SqlDateTimeMin = new DateTime(1753, 1, 1); 
public readonly DateTime SqlDateTimeMax = new DateTime(9999, 12, 31); 

if (value < SqlDateTimeMin || value > SqlDateTimeMax) 
    // Validation check fails 
else 
    // Validation check succeeds 

bu en iyi yolu mu kullanıyorum değerini doğrulamak için mi? Bu min ve maksimum değerleri kodlamak için bir alternatif var mı?

cevap

19

SqlDateTime.MinValue ve SqlDateTime.MaxValue nedir?

Not: bunlar SQL tip min/max değil senin kullanıcıların bu aralığın dışındaki tarihleri ​​giriyor niçin gerçek soru olduğunu düşünüyorum

+1

+1 - görünüşe göre * tam * OP'nin ne aradığını. –

+0

Gözler bu öğleden sonra geçe kötü gidiyor. Benim hatam. – dotariel

+0

Bunu genişletmek için, normal bir DateTime (tökezlediğim bir şey) kontrol etmeniz gerekiyorsa, SqlDateTimes öğesinin bir DateTime değeri olan Value özelliğini gösterdiğinden emin olun. –

0
SqlDateTime.MaxValue = 12/31/9999 
SqlDateTime.MinValue = 1/1/1753 

Kodunuz sonra okurdum: DateTime.MinValue 1753/01/01 değil daha ziyade 1/1/0001 çünkü

if (value < SqlDateTime.MinValue || value > SqlDateTime.MaxValue) 

Ben, bu DateTime.MaxValue ve DateTime.MinValue daha iyi ihtiyaçlarınızı karşılayan düşünüyorum.

-4

:-) önceki 2 cevaplar gibi .net türleri? Doğrulamak için kodunuz gayet iyi, ancak UI'de insanların sahte tarihlere girebileceği daha büyük bir sorun olduğunu söyleyebilirim.

+2

Bazılarımız için, bir tarihte yazım hatası yapmak çok kolay. Ya da tarih biçimini (mm/gg/yyyy veya gg/aa/yyyy) yanlış anlamak için. – DOK

+0

Onlara bir tarih seçici verin ve metin kutusunu devre dışı bırakın. İşte bu yüzden ... :-) – Achilles

+1

Sadece UI düzeyinde doğrulamaya güvenmek için yeterli değil, çünkü bu "filtre" (daha iyi bir kelime olmaması için) atlanabilir (web uygulamalarında oldukça kolay bir şekilde) aslında). Doğrulama (minimum!) Sunucuda olmalı, kullanıcının ellerine ulaşamaz. Kullanıcı düzeyinde doğrulama, yalnızca kullanıcı deneyimini güzelleştirmek ve işlem süresini/kaynaklarını kaydetmek için yapılır. Ve, bunun yerine böyle yuvarlamanız gerekir. –