2012-04-23 32 views
1

我有一个存储在SQL Server数据库中的表。该表的其中一个字段为DATETIME。我也有一个ASP Calendar其日期与数据库提交的DATETIME比较。仅比较ASP.NET代码中的DATETIME字段中的DATE

问题是我不想比较时间。只有日期需要比较。什么是SQL查询这样做。

这是我使用的:

SqlCommand myCommand = new SqlCommand(" 
SELECT AUDIT.AUDIT_DETAILS, USERS.USER_NAME, AUDIT.DATE_TIME, IP 
FROM USERS JOIN AUDIT ON (USERS.USER_ID = AUDIT.USER_ID) 
WHERE USERS.USERS_NAME LIKE '%"+TextBox1.Text+"%' AND CONVERT(VARCHAR(10),AUDIT.DATE_TIME,110) like "+Calendar1.SelectedDate.Date+"'%'", conn); 

我得到正确的输出在SQL Server探险但是从浏览器通过asp.net运行时,查询结果为空

+0

能否请你展示以哪种方式,你在SQL Server Explorer和以哪种方式是你Calendar1.SelectedDate.Date测试?也许问题是日期格式。 – 2012-04-23 07:20:18

+0

我也这么认为。我其实没有指定任何格式。我如何让它们以相同的格式。 – 2012-04-23 07:22:35

+0

您可以将Calendar1.SelectedDate.Date以SQL需要的格式放入Calendar1.SelectedDate.Date.ToString(“format”),而不必格式化您必须编写的格式,例如dd/MM/yyyy或yyyy/MM/dd – 2012-04-23 07:29:05

回答

2

你可以只从SQL日期时间这样的SQL这样的

CONVERT(DATE,GETDATE()) 

然后你可以比较这个值。

+1

问题编辑 – 2012-04-23 07:15:58

2

尝试修改您的查询,如下

SqlCommand myCommand = new SqlCommand("SELECT AUDIT.AUDIT_DETAILS, USERS.USER_NAME, AUDIT.DATE_TIME, IP 
    FROM USERS JOIN AUDIT ON (USERS.USER_ID = AUDIT.USER_ID) 
    WHERE USERS.USERS_NAME LIKE '%"+TextBox1.Text+"%' AND 
    CONVERT(VARCHAR(10),AUDIT.DATE_TIME,106) == CONVERT(VARCHAR(10),CAST('"+Calendar1.SelectedDate.Date+"' as DATETIME),106)", conn);