如何处理SQL Server的日期格式?

时间:2012-12-12 06:34:50

标签: c# sql sql-server

我在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 个答案:

答案 0 :(得分:5)

根本不传递SQL中的值。对这样的所有值使用参数化SQL。优点:

  • SQL更清晰(不混合代码和数据)
  • 避免SQL注入攻击(这里可能不相关,但绝对是字符串)
  • 避免转换问题

从根本上说,尽可能避免字符串转换。不仅在数据库工作中,而且在一般情况下。尽量让您的数据保持“自然”类型(DateTime此处)。在这种情况下,您根本不需要转换为字符串(因为您可以使用参数),为什么要这样做呢?

有关如何在SQL中使用参数的示例,请参阅SqlCommand.Parameters的文档。

答案 1 :(得分:1)

使用反向ISO格式:yyyymmdd(所以12/12/2012是20121212)并使用24小时格式。

Select * From Sec_RoleFeatures Where (RoleId = 39) and (FeatureCode = 'MR') and (FromDate = '20121212 11:05:05')

答案 2 :(得分: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)

这里的优点是,它只会比较忽略时间部分的日期。

答案 3 :(得分:0)

尝试使用

Select * From Sec_RoleFeatures Where RoleId = 39 and FeatureCode = 'MR' and  CONVERT(varchar(10),FromDate,101)='12/12/2012'