我必须根据条件 - 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请求
答案 0 :(得分:0)
在SQL Server中,您可以将DateTime转换为Date:
SELECT *
FROM [Patient_Appointment_Detail]
WHERE CAST([AptTime] AS DATE) = CAST(@AptTime AS DATE)
您还有另一个问题,即您将参数中的字符串作为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))