2016-09-29 21 views
0

私は、C#のパラメータのfrom-toのセットをSqlCommandに渡していた問題に遭遇しました。しかし、結果は9月1日SQLを使用して2016年SqlCommandと比較するにはどのように追加できますか?

からのデータを含めている2016年8月31日

:に2016年8月30日

  • :私のテストシナリオから、次の日付を

    • を関与しましたサーバーのプロファイラ私は、SQLクエリに入る日付が2016-08-31 23:59:59の代わりに '2016-09-01 00:00:00'であることがわかります。ここで

      は、関連するC#はC#は、それがSQLに送信された日付を変更させることになる何

      if (request.DateStart != DateTime.MinValue) 
          command.Parameters.Add(new SqlParameter("@dateStart", request.DateStart)); 
      
      if (request.DateEnd != DateTime.MinValue) 
          command.Parameters.Add(new SqlParameter("@dateEnd", request.DateEnd)); 
      

      スニペットのですか?

  • 答えて

    1

    フロントエンドでは、瞬間(to).endOf( 'day')を使用して、終わりをAPIのDateEndパラメータに送信していたことが判明しました。問題は「2016-08-31 23:59:59:9990」の日付になるということです。これはちょうどSQLのdatetime型よりも精度が高いので、C#は有用に日付の値を '2016-09-01 00:00:00'に丸めます。

    フロントエンドコードを次のように変更し、問題を修正しました。この場合、精度があまりにも高いことが分かります。

    moment(filter.dateEnd).add(1, 'day').add(-1, 'second') 
    
    +0

    「59:59:59:9990」という時刻を作成すると、1日で24時間しかないので(60ではなく)無効です。 – juharr

    +0

    質問に同じ問題があります。 – juharr

    関連する問題