c# - 如何从文本框中获取 dd/MM/yyyy 格式的日期?
问题描述
我从查询中获取两个日期之间的数据,但问题是文本框以 YYYY/MM/dd 格式获取数据,我需要将其转换为 dd/MM/yyyy。
Start Date: <asp:TextBox ID="txtstart" runat="server" TextMode="Date" ></asp:TextBox>
End Date: <asp:TextBox ID="txtend" runat="server" TextMode="Date"></asp:TextBox>
<p>
<asp:Button ID="btnfetch" runat="server" Text="Button" OnClick="btnfetch_Click1" />
</p>
<div>
<asp:GridView ID="GridView2" runat="server">
</asp:GridView>
</div>
using (SqlCommand cmd = new SqlCommand(
"SELECT Name,Present from AttendanceRecords " +
"where Date between '" + txtstart.Text + "' and '" + txtend.Text + "' ", con))
{
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.Read())
{
GridView2.DataSource = dt;
GridView2.DataBind();
}
else
{
lbldatercrd.Text = "NOT FOUND";
}
解决方案
阿迪尔,
- 您应该始终使用参数来防止 SQL 注入攻击,
- 预计您应该使用 DateTime 或 DatePicker、TimePicker 控件而不是文本框,但目前我假设您正在获取格式为 yyyy/MM/dd 的有效日期。
- 如果值也有可能包含时间部分,则不应将 BETWEEN 用于日期时间范围查询。但这里看起来你只处理日期,所以可能没问题。
DataAdapter 根据需要打开和关闭连接。
DateTime start, end;
if (DateTime.TryParse(txtStart.Text, out start) && DateTime.TryParse(txtEnd.Text, out end))
{
string cmd = @"SELECT Name,Present
from AttendanceRecords
where [Date] between @start and @end";
SqlDataAdapter da = new SqlDataAdapter(cmd, con);
da.SelectCommand.Parameters.Add("@start", SqlDbType.DateTime).Value = start;
da.SelectCommand.Parameters.Add("@end", SqlDbType.DateTime).Value = end;
DataTable dt = new DataTable();
da.Fill(dt);
GridView2.DataSource = dt;
GridView2.DataBind();
}
else
{
lbldatercrd.Text = "NOT FOUND";
}
推荐阅读
- javascript - for循环内的异步回调
- python - 使用用户环境中未安装的字体,使用前无需安装
- javascript - 自动隐藏搜索框
- php - 如何显示存储在数组中的 ID 详细信息?
- java - 对象级别的junit清理测试数据
- spring-boot - Spring WebClient 和 Eureka Server
- selenium - 如何在 AWS lambda 中部署 selenium 测试套件
- udp - 两个 ESP32 上的 AsyncUDP 示例不工作:“WL_NO_SSID_AVAIL”
- javascript - 画这条线的简单方法是什么?
- c++ - 当条件更新是阻塞功能时避免丢失唤醒