0

我必须根据条件在 gridview 中显示记录 - 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");

我也收到此错误:

字符串未被识别为有效的日期时间。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。异常详细信息:System.FormatException:字符串未被识别为有效的 DateTime。源错误:在执行当前 Web 请求期间产生了未处理的异常

4

2 回答 2

0

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

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

参考:MS SQL 比较日期?

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

创建一个控件来保存您的日期,例如Calendar

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

myCalendar.SelectedDate = DateTime.Now.AddDays(1);
于 2013-04-23T09:13:28.750 回答
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))
于 2013-04-23T09:24:23.683 回答