1

私はasp.net 4.0にWebアプリケーションを持っており、レコードを取得するときに「FromDate」のカレンダーコントロールを使用しています。クエリは次のとおりです。

Select * 
From Sec_RoleFeatures
Where RoleId = 39 
  and FeatureCode = 'MR' 
  and FromDate='12/12/2012 11:05:05 AM'

この`FromDateフィールドの日付形式はSQL形式と一致しないため、結果はレコードに与えられませんnull

この場合、私は何ができますか?私の日付形式をSQL日付形式と一致させる方法は?

4

4 に答える 4

5

SQL で値を渡さないでください。このようなすべての値に対してパラメータ化された SQL を使用します。利点:

  • SQL はよりクリーンです (コードとデータが混在していません)。
  • SQL インジェクション攻撃を回避します (おそらくここでは関係ありませんが、文字列の場合は間違いありません)。
  • 変換の問題を回避

基本的に、できる限り文字列変換は避けてください。データベース作業だけでなく、一般的に。DateTimeデータを「自然な」タイプ (ここ) にできる限り長く保つようにしてください。この場合、文字列に変換する必要はまったくありません(パラメーターを使用できるため)。

SqlCommand.ParametersSQL でパラメーターを使用する方法の例については、ドキュメントを参照してください。

于 2012-12-12T06:45:54.353 に答える
1

逆の ISO 形式: yyyymmdd (2012 年 12 月 12 日は 20121212) を使用し、時刻には 24 時間形式を使用します。

Select * From Sec_RoleFeatures Where (RoleId = 39) and (FeatureCode = 'MR') and (FromDate = '20121212 11:05:05')
于 2012-12-12T06:37:07.497 に答える
0

キャストしてみる:

Select * From Sec_RoleFeatures Where RoleId = 39 and FeatureCode = 'MR' and 
CAST(FromDate AS DATE) = CAST('12/12/2012 11:05:05 AM' AS DATE)

ここでの利点は、時間部分を無視して日付のみを比較することです。

于 2012-12-12T06:39:49.100 に答える
0

使ってみて

Select * From Sec_RoleFeatures Where RoleId = 39 and FeatureCode = 'MR' and  CONVERT(varchar(10),FromDate,101)='12/12/2012'
于 2012-12-12T06:40:47.570 に答える