powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Дата в запросе
8 сообщений из 8, страница 1 из 1
Дата в запросе
    #39251680
Mixon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую ВСЕХ!

подскажите как исправить ситуацию, есть запрос
Код: sql
1.
select * from t where _date between @ds @de



@ds @de задаю через параметры:
Код: c#
1.
2.
comm.Parameters.AddWithValue("@ds", date_start.Date);
comm.Parameters.AddWithValue("@de", date_end.Date.AddDays(1).AddMilliseconds(-1));



получается так что на сервере день и месяц меняются местами и вместо 01.05.2000-02.05.2000
получаю результат запроса для 05.01.2000-05.02.2000

куда копать?

ЗЫ в SMSS все как надо возвращает с мое же машины.
...
Рейтинг: 0 / 0
Дата в запросе
    #39251684
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mixon
куда копать?

От забора и до обеда.
BETWEEN
...
Рейтинг: 0 / 0
Дата в запросе
    #39251698
Mixon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЕвгенийВMixonкуда копать?

От забора и до обеда.
BETWEEN


Код: sql
1.
select * from t where _date between @ds AND @de


* опечатка

какие еще будут предложения?

если вместо параметров написать строковое представление даты, все прекрасно работает, но
хотелось разобраться как работать с параметрами (datatime)
...
Рейтинг: 0 / 0
Дата в запросе
    #39251725
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запрос в хранимке? если да - какого типа парамеры?
какого типа поле "_date" в БД?
Что показывает профайлер?
...
Рейтинг: 0 / 0
Дата в запросе
    #39251729
Mixon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proзапрос в хранимке? если да - какого типа парамеры?
какого типа поле "_date" в БД?
Что показывает профайлер?

запрос просто запрос, поле datetime,

профайлера нет :( , если бы и был, то сомневаюсь что моих прав будет достаточно для использования, роль не Админ.
...
Рейтинг: 0 / 0
Дата в запросе
    #39251738
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mixon,
Пробуй тогда явно указать тип параметра, такое впечатление, что преобразуются в строку.
...
Рейтинг: 0 / 0
Дата в запросе
    #39251795
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВMixon,
Пробуй тогда явно указать тип параметра, такое впечатление, что преобразуются в строку.
Преобразуется, но не считается строкой (т.е. в запрос передается не как строка):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
static void Main(string[] args)
{
  using (var cnn = new SqlConnection(@"Data Source=.;Initial Catalog=master;Integrated Security=True"))
  {
    cnn.Open();
    using (var cmd = new SqlCommand(@"
      ;with cte(dt) as (
      select convert(datetime, '20000502')
      union all
      select convert(datetime, '20000120')
      )
      select * from cte where dt between @fd and @td
    ", cnn))
    {
      cmd.Parameters.AddWithValue("@fd", new DateTime(2000, 5, 1));
      cmd.Parameters.AddWithValue("@td", new DateTime(2000, 5, 3));
      using(var rd = cmd.ExecuteReader())
        while(rd.Read())
          Console.WriteLine(rd.GetDateTime(0));
    }
  }
  Console.ReadKey(true);
}


и в профайлере получаем 2 события:
1) RPC:Starting:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
exec sp_executesql N'
;with cte(dt) as (
	select convert(datetime, ''20000502'')
	union all
	select convert(datetime, ''20000120'')
)
select * from cte where dt between @fd and @td
			',N'@fd datetime,@td datetime',@fd='May  1 2000 12:00:00:000AM',@td='May  3 2000 12:00:00:000AM'


2) RPC:Completed:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
exec sp_executesql N'
;with cte(dt) as (
	select convert(datetime, ''20000502'')
	union all
	select convert(datetime, ''20000120'')
)
select * from cte where dt between @fd and @td
			',N'@fd datetime,@td datetime',@fd='2000-05-01 00:00:00',@td='2000-05-03 00:00:00'


Первое событие наводит на размышления об установленном set dateformat (помно посмотреть в TextData события ExistingConnection). Во втором событии (отдельный вопрос, почему профайлер для первого события и для втрого дает разные представления параметров) строки даты в инвариантном формате, и тут надо бы проверить локальные региональные настройки.
...
Рейтинг: 0 / 0
Дата в запросе
    #39251845
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во блин!
Я имел ввиду как то так!
Код: c#
1.
2.
DateTime date_start = new DateTime(2000, 05, 01);
            comm.Parameters.Add("@fd", SqlDbType.DateTime).Value= date_start.Date
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Дата в запросе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]