2016-07-22 12 views
0

datetime値を格納されたprocクエリに渡そうとしていますが、datetimeフィールドでもあるカラムに対してチェックされています。Sybase(ASE)完全一致のwhere句のDATETIMEフィールド

、私が持っているテーブル持っている例を言うことができます:私は@input_insertDate = '07/01/2016 06:25:15 PM'を渡すと、それは私の持っていけば、今

Create proc usp_GetProductsByInsertDate 
@input_insertDate datetime 
as 
select * from Products where InsertDate = @input_insertDate 

ProductID int 
ProductName varchar(20) 
InsertDate DateTime 

を今、私はストアドプロシージャを書きますその時点で正確に挿入された製品のリストですが、それは起こりません。私は以下のように結果を返すようにしなければならないかもしれません:

select * from Products where InsertDate >= @input_insertDate 

私は "日付と時刻"をどこのフィールドに使用したいでしょうか?それを使うことはできますか?これは愚かな質問かもしれませんが、なぜ動作しないのか知りたいのですが。方法を教えてください。

答えて

0

予想される一致する行に対して、ターゲット列InsertDateの値にミリ秒(> 0)が含まれているかどうかを確認できますか。デフォルト設定の一部のデータベースIDEでは、このような混乱の原因となるミリ秒数は表示されません(@input_insertDateはミリ秒単位で表示されません)。あなたのクエリは私にはうまく見える、あなたは確認するためにあなたの期待された行にdatepart(ms, InsertDate)を行うことができます。

+0

いいえ、私はそれがdatepartに関連していて、対象の列に何ミリ秒もありません – superachu

+0

millisecond値のdatepartで期待しているデータを投稿できますか? – Neeraj

0

私は問題がクエリまたはパラメータの文字列として渡されていると思いますが、EXECストアドプロシージャでは、正確な日時の一致のための文字列値が気に入らないように見えます。日付オブジェクトがプロシージャ内で内部的に渡されると、それは一致して結果を返します。つまり、 "datetime"を持つフィールドのテーブルを照会すると、その変数を変数に割り当て、その変数を次のクエリに渡して完全一致させます、それは動作します。奇妙じゃない?