如何根据日期=明天显示记录?

时间:2013-04-23 09:10:52

标签: c# asp.net sql-server

我必须根据条件 - Appointment date = tomorrow date在网格视图中显示记录。

我尝试了很多选项,但没有得到确切的方法。我使用datetime进行预约,也有时间。所以我无法消除时间并仅仅比较日期。

现在在sqldatasource中使用此查询:

SELECT * FROM [Patient_Appointment_Detail] WHERE ([AptTime] = @AptTime)

并在控制参数中使用:

<asp:ControlParameter ControlID="lblgetdate" DefaultValue="NULL" Name="AptTime" 
                PropertyName="Text" Type="DateTime" />

我正在加载页面时将明天日期添加到标签。但无法在AptTime中删除时间并仅比较日期。

lblgetdate.Text = DateTime.Now.AddDays(1).ToString("dd/mm/yyyy");

我也遇到了这个错误:

  

字符串未被识别为有效的DateTime。描述:一个   在执行当前Web期间发生了未处理的异常   请求。请查看堆栈跟踪以获取有关的更多信息   错误以及它在代码中的起源。例外细节:   System.FormatException:String未被识别为有效的DateTime。   源错误:在此期间生成了未处理的异常   执行当前的Web请求

2 个答案:

答案 0 :(得分:0)

在SQL Server中,您可以将DateTime转换为Date

SELECT * 
FROM [Patient_Appointment_Detail] 
WHERE CAST([AptTime] AS DATE) = CAST(@AptTime AS DATE)

参考:MS SQL compare dates?

您还有另一个问题,即您将参数中的字符串作为DateTime传递。这是非法的,你有例外。

创建一个控件以保持日期,例如Calendar

<asp:ControlParameter ControlID="myCalendar" DefaultValue="NULL" Name="AptTime" 
            PropertyName="SelectedDate" Type="DateTime" />

myCalendar.SelectedDate = DateTime.Now.AddDays(1);

答案 1 :(得分:0)

这将做你想要的:

SELECT * FROM [Patient_Appointment_Detail] WHERE ([AptTime] = DATEADD(day, 1, CONVERT(DATETIME, @AptTime)))

如果您将日期作为今天的日期传递。

要与明天的日期进行比较,请使用:

SELECT * FROM [Patient_Appointment_Detail] WHERE CAST([AptTime] AS DATE) = CAST(CONVERT(DATETIME, @AptTime) AS DATE))
相关问题