0

Paper_Details現在の日付と現在の時刻の15分前に基づいてテーブルから情報を取得しようとしていました。

これが私のSELECT声明です

objcmd.CommandText = "Select * from PAPER_DETAILS where ExamDate = Convert(date, getdate()) and StartTime = (Convert(time, getdate()) - 15)"

しかし、それはこのエラーを示しています

タイプdateは、定義されたシステムタイプではありません。
タイプ時間は定義されたシステムタイプではありません

SQLServer2005とASP.NETをVBを使用して使用しています。

ここから上記のクエリを参照します

前もって感謝します !!

更新しました

StartTime           |   ExamDate   
____________________|_____________________________
1/1/1900 4:20:00 PM | 7/27/2012 12:00:00 AM

シナリオを理解するのに役立つ私のテーブルのサンプルデータ。

7/27/2012上記のサンプルデータから、ユーザーはfromから4:05:00 PMまでのみその行に対応する情報を表示できるようにしたかったの4:20:00 PMです。皆さんが私のシナリオを理解してくれたことを願っています。

4

5 に答える 5

1
objcmd.CommandText = "Select * from PAPER_DETAILS " + 
                     "where ExamDate=dateadd(dd,0, datediff(dd,0, getDate()) " + 
                     "and (getDate() >= DATEADD(n, -(DATEPART(minute, StartTime) " + 
                     "+ DATEPART(HOUR, StartTime) * 60) - 15, GETDATE())) and  " + 
                     "(GETDATE() <= DATEADD(n, (DATEPART(minute, StartTime) + " + 
                     "DATEPART(HOUR, StartTime) * 60), GETDATE()))" 

ExamDateには時刻情報が含まれていないため、正確な比較を行うには時刻情報のない現在の日付が必要だと思います。
また、フィールドはすでにDateTimeの種類であるため、結果をDateTimeに変換する必要はありません。

編集:StartTimeの時間と分を抽出し、それらを使用してチェック時間の制限を作成する非常に複雑なテストを追加しました。テストできませんので、動作するかどうか教えてください。

于 2012-07-27T10:36:14.793 に答える
0

これは、私がついに得たものです

objcmd.CommandText = "SELECT * FROM PAPER_DETAILS WHERE ((ExamDate = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))) AND ((DATEPART(minute, GETDATE()) >= DATEPART(minute, DATEADD(MINUTE, - 15, StartTime)))  AND (DATEPART(hh, GETDATE()) = DATEPART(hh, StartTime)) AND (DATEPART(minute, GETDATE()) <= DATEPART(minute, StartTime))    ))"

そして、いくつかのサンプルデータで検証すると、正常に動作します。!!!

于 2012-07-27T16:38:03.580 に答える
0

DATEADDを使用して、現在の時刻から15分を減算します

編集:「CONVERT(DATE ..」は本当に必要ないので削除して、もう一度テストしてください

SELECT *
  FROM PAPER_DETAILS
 WHERE ExamDate  = GETDATE()
   AND StartTime = DATEADD(MINUTE,-15,GETDATE())
于 2012-07-27T10:29:14.150 に答える
0

これを使って

Select * from PAPER_DETAILS
where ExamDate >= DATEADD(MINUTE, -15, getdate()) and ExamDate <= getdate()
于 2012-07-27T10:33:59.717 に答える
0

異なる日時を比較したい場合-2次に、以下を試してください。

objcmd.CommandText = "Select * from PAPER_DETAILS " + 
                 "where CONVERT(varchar(20),ExamDate,101)=Convert(varchar(20),getdate(),101) " + 
                 "and CONVERT(varchar(20),StartTime,108)=CONVERT(varchar(20), dateadd(MINUTE,-15,getdate()),108)" 
于 2012-07-27T10:44:23.713 に答える