2009-03-11 2 views
0

私はasp.netでcalendarextenderコントロールを使用しています。時刻は表示されず、日付のみが表示されます。ただし、データベースに挿入すると、時間は自動的に挿入されます。対応するレコードが表示されます。この問題を解決するにはstoredprocedureの変更ができます。CalendarTime ExtenderのDateTime

+0

where句で日付クエリのストアドプロシージャからコードスニペットを提供できますか? –

+0

また、使用しているデータベースのバージョン –

答えて

1

あなたが遭遇する可能性が最も高い問題は、タイムスタンプのために、2009年3月11日に日付を探しているとおそらくそれを見つけることができないということです。あなたがstrored手順を変更するために使用できるいくつかのメソッドは、日付の範囲を検討するために、次のようになります。ステートメント間の包括範囲

Select myname,mydate from sometable 
    where mydate between 3/10/2009 and 3/11/2009 

それとも

使用にあなたを与えるだろう使用

を>と<はあなたの排他的な範囲を与えるために

Select myname,mydate from sometable 
    where mydate >3/10/2009 and mydate < 3/12/2009 

それとも

DateAdd機能を利用して、フィールドの時間を削除します。そこには、表自体を変更することができた場合は、このいくつかの良い例がSQLTeam Blog

dateadd(dd,0, datediff(dd,0,myDate)) 

それとも であり、あなたは、SQL Server 2008を使用しているあなたは、新しいSQL Server 2008のデータ型、ないとのデートを使用することができます対処すべき時間的要素である。新しいDate and Time enhancements in SQL Server 2008についてのMSDNのブログ上の良いブログがあります。

また、挿入手順(該当する場合)を見て、時間をゼロにすることもできます。

また、datetimeを扱う場合は、> =と< =を考慮に入れるようにしてください。レコードを見逃さないようにしてください。

希望すれば、問題を解決するのに十分なオプションが得られます。

0

データベースdatetimeのdatatypeには日付と時刻の両方が含まれています。 '1/1/2011'として日付を挿入すると、 1/1/2011 00:00:00 AM

と解釈されます。これは、選択クエリで日付と時刻の両方を比較しようとするため失敗します。同じ日付の間のインスタンス句のような

使用のいずれかの日/月/年のコンポーネントの2011年1月1日と2011年1月1日の間「。IEや<を使用し、>演算子

select thisone from sometable where day(tabledate) between day(wheredate1) and day(wheredate2) 
    and month(tabledate) between month(wheredate1) and year(wheredate2) 
and year(tabledate) between year(wheredate1) and year(wheredate2) 

すなわちか

select thisone from sometable where tabledate>=wheredate1 and tabledate<=wheredate1 

演算子=包含または排他検索を使用するケースに適用