navi G Ответов: 2

Я хочу сравнить системную дату с моей датой сохраненной базы данных SQL с помощью запроса в ASP.NET с#


я сохранил данные в SQL,есть столбец "дата" с типом данных "Дата-Время". теперь я хочу сравнить системную дату с датой моей базы данных с помощью запроса. пожалуйста, помогите друзьям заранее спасибо.

я попробовал этот код, который показан в его показывает общие данные таблицы. я хочу показать данные от текущей даты до последних 3 месяцев данных.(спасибо)

Что я уже пробовал:

SqlConnection con = новый SqlConnection();
protected void Page_Load(отправитель объекта, EventArgs e)
{
против.ConnectionString = ConfigurationManager.ConnectionStrings ["Конн"].Параметр connectionString;
против.Открыть();
пробовать
{
Maxdate датавремя = Датавремя.Сейчас.Дата;
Mindate датавремя = Датавремя.Сейчас.Дата.AddMonths(-3);
Sqldatasource1 на.Команды selectcommand = "Select * из секретаря1, где дата&ЛТ;='" + maxdate + "' дата и&ГТ;='" + mindate + "'" ;

[no name]

"я хочу показать данные от текущей даты до последних 3 месяцев данных", хорошо.... и?

navi G

пожалуйста, посмотрите мой код и скажите мне, что с ним не так.

[no name]

Я вижу ваш код и не могу сказать, что с ним не так. Я не могу запустить ваш код, у меня нет доступа к вашему конфигурационному файлу и у меня нет доступа к вашей базе данных. Это до вас, чтобы сказать нам, что вы видите на экране, или описать проблему или даже задать вопрос!

Sinisa Hajnal

Используйте параметризованный запрос и отправляйте данные в формате UTC в качестве параметров. Или используйте хранимую процедуру и отправляйте параметры datetime напрямую. Я обычно использую даты UTC просто потому, что знаю, что я посылаю и как я преобразую это в хранимой процедуре (помогает с совместимостью)

2 Ответов

Рейтинг:
16

OriginalGriff

Никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.
Так что попробуй:

DateTime maxdate = DateTime.Now.Date;
DateTime mindate = DateTime.Now.Date.AddMonths(-3);
SqlDataSource1.SelectCommand = "SELECT * FROM general1 WHERE [date] BETWEEN @MND AND @MXD";
SqlDataSource1.SelectCommand.Parameters.AddWithValue("@MND", mindate);
SqlDataSource1.SelectCommand.Parameters.AddWithValue("@MXD", maxdate);


Рейтинг:
12

#realJSOP

Что-то вроде этого:

SqlParameter[] parameters = new SqlParameter[]
{
    new SqlParameter("@minDate", minDate.Date),
    new SqlParameter("@maxDate", maxDate.Date)
};
string query = "select * from general1 where CONVERT(date, table.date) between @maxdate AND @mindate" ;
DataSet dataset = null;
using (SqlConnection conn = new SqlConnection(connectionString))
{
    conn.Open();
    using (SqlCommand cmd = new SqlCommand(query, connetionstring))
    {
        cmd.CommandType = CommandType.Text;
        cmd.Parameters.AddRange(parameters);
        using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
        {
            dataset = new DataSet();
            int rows = adapter.Fill(dataset);
        }
    }
}