【发布时间】:2017-03-08 17:01:02
【问题描述】:
我正在 c# .net 中制作项目,但我严重卡在数据库查询中。
我的数据库表中有一个日期列,我在其中存储了数据类型为varchar(50) 的日期,并默认传递了(convert(varchar(8),getdate(),5),因此它给了我一个dd-MM-YY 中的日期,例如28-03-17。
现在用户输入月份格式MM 和年份格式YY" 仅在文本框中(NOT DAY),如果用户条目(month,year) 等于数据库表的月份和年份,则显示全部数据。
我知道我必须先从表日期中提取月份和年份,然后与用户输入进行比较。通过搜索,我知道通过使用Year(DateField),我可以从日期字段中提取年份和月份Month(Date Field)。
我正在使用下面的查询,但它根本不正确。
"select * from table1
where YEAR(Time=convert(varchar(8),getdate(),5))='" + textBox1.Text +
"' AND MONTH(Time=convert(varchar(8),getdate(),5))='" + textBox2.Text + "'";
其中“时间”是我在数据库中的日期字段的名称。最大的问题是我不知道如何以我使用的这种格式比较年份和月份。
【问题讨论】:
-
我在使用这个查询时遇到了很多错误。
-
与问题无关,但您可以edit您的问题,而不是在 cmets 中添加信息。
-
getDate 是 sql-server 函数 ...不是 mysql .. 请确认您的 db tag ..
-
您可以这样做:以您所说的格式 (dd) 将天数添加到输入字符串的开头,并将其与数据库中的记录进行比较。 我的意思是添加01 到您的字符串的开头,这样无论数据库中的日期是什么,您的日期都将等于或小于该日期。
-
你有一个巨大的 sql 注入漏洞,通过将文本框的文本值直接传递到 SQL 语句中......实际上,你存储的文本格式是什么?您可以将存储的数据类型更改为
date而不是varchar(50)还是一成不变的?
标签: c# sql-server date