我有一个从MySQL数据库中提取日期的应用程序(字符串格式:01-jan-2000)。我需要将这些数据与TextBox中输入的日期进行比较。
这是我到目前为止所做的:
String query = "select * from tb_demographic_data where date_of_birth LIKE '%" +
txb_startDate.Text + "' OR (str_to_date(date_of_birth,'%d,%b,%Y') <=
str_to_date('"+txb_startDate.Text+"','%d,%b,%Y'))
当我运行查询时,我没有得到任何结果。我的sql代码没有错。我认为当我将字符串更改为str_to_date()
的日期时会发生错误。有人可以帮忙吗?
答案 0 :(得分:1)
不要对日期进行字符串比较。将数据库中的列更改为日期,并使用参数化语句或类似语句更新查询以接受日期值。
答案 1 :(得分:0)
看起来你的日期格式有误...... '%d,%b,%Y'
说分隔符是逗号。我想你想要'%d-%b-%Y'
。
答案 2 :(得分:0)
正如Nikhil指出的那样,让用户在日期/日历/时钟控件中输入日期通常是一个更好的选择。另外,我强烈建议不要从文本框中获取用户输入,只需将其粘贴到SQL字符串中即可。这会导致SQL injection。
我建议您使用上述推荐控件之一让用户指定特定的DateTime
或convert the data in your text box to a DateTime
object。假设您使用DbCommand
个对象来运行查询,则可以使用参数化查询并将DateTime
作为参数传递,而不是直接将其放入命令中。您的SQL可能如下所示:
select * from tb_demographic_data
where date_of_birth <= @startDate
然后,您必须向DbParameter
DbCommand
ParameterName
"@startDate"
Value
个DateTime
对象添加{{1}}
答案 3 :(得分:0)
select * from tb_demographic_data
where date_of_birth
LIKE '%" + txb_startDate.Text + "'
OR (datediff(str_to_date('" + txb_startDate.Text + "',
'%d-%b-%Y'),
str_to_date(date_of_birth,
'%d-%b-%Y'))>=0)