如何使用文本框搜索功能返回空值和同一列内的值



问个小问题。我已经尝试了这么多的可能性来获得空值和值的日期列,如使用ISNULL, null, 0,但返回0的结果。我不知道如何编程从创建日期获得空值。

protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
FillDates();
}
}
private void FillDates()
{
txtDateS.Text = DateTime.Now.ToString("01-01-yyyy");
txtDateE.Text = DateTime.Now.ToString("12-31-yyyy");
}
private string ConvertDate(Object obj)
{
if (obj is DateTime)
{
return ((DateTime)obj).ToString("dd-MM-yyyy");
}
else
{
return obj.ToString();
}
}
protected void AddRowItem(StringBuilder sb, SqlDataReader reader, int index)
{
sb.Append("<tr><td>").Append(index).Append("</td>");
sb.Append("<td>").Append(ConvertDate(reader[0])).Append("</td>");
sb.Append("</tr>");
}   
protected int DoItemList(SqlConnection connection, StringBuilder sb, string DateS, string DateE, string filter)
{
string sql = "";
SqlCommand readCommand = null;
SqlDataReader reader = null;
int count = 0;
try
{
string itemFilter = DoFilter(filter);
sql = "SELECT v.[Code] FROM [CAS].[dbo].[Van] v WHERE v.[Created_DateTime]>='" + DateStart + "' and b.[Created_DateTime]<='" + DateEnd + "';
readCommand = new SqlCommand(sql, connection);
reader = readCommand.ExecuteReader();
while (reader.Read())
{
count++;
AddRowItem(sb, reader, count);
}
reader.Close(); 
}
catch (Exception e)
{
//
}
return count;
}

在文本框

中输入网址
<div>
<asp:Label id="Label1" runat="server" Width="100px">Date From:</asp:Label>
<asp:TextBox id="txtDateS" runat="server" Width="184px"></asp:TextBox><br />
<br/>
<asp:Label id="Label2" runat="server" Width="100px">Creation date from:</asp:Label>
<asp:TextBox id="txtDateE" runat="server" Width="184px"></asp:TextBox><br />

<asp:Button id="cmdRun" runat="server" Width="91px" Height="24px" Text="Run" onclick="cmdRun_Click"></asp:Button>
<asp:Label id="lblStatus" runat="server"></asp:Label>
<hr noshade>
</div>

结果输出

tbody> <<tr>
代码创建日期
A00012018-08-12
A0002

根据您的评论,似乎您总是希望返回具有NULLCreated_DateTime的记录。在这种情况下,你应该这样做。

SELECT v.Code
FROM dbo.Van v
WHERE (
v.Created_DateTime >= @DateStart
-- When dealing with dates that are stored as datetime and could therefore have an accidental time component
-- its safer to use less than a day in the future
AND v.Created_DateTime < DATEADD(DAY, 1, CONVERT(DATE,@DateEnd))
)
OR v.Created_DateTime IS NULL;

注意我正在向您展示您应该使用的查询,它使用参数而不是字符串连接。因为字符串连接会导致SQL注入。