Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/34: Рейтинг темы: голосов - 34, средняя оценка - 4.59
6 / 6 / 5
Регистрация: 23.12.2012
Сообщений: 112

Невозможно выполнить операцию "Like" над System.DateTime и System.String

20.02.2015, 13:04. Показов 6885. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. проблема такая: У меня есть база на postgresql, в ней есть 6 столбцов, из которых по некоторым есть фильтрация. есть столбец с временим в БД он в типе TimeStamp, по нему тоже надо делать фильтрацию
делаю я фильтр таким образом:
C#
1
2
3
4
5
6
7
private void textFilter(string str)
        {
            if (!string.IsNullOrEmpty(str))
                filter3 = String.Format("[LocalDateTime] LIKE '%{0}%'", str);
            else
                filter3 = empty;
        }
здесь метод который считывает значение из текстбокса и обновляет фильтр.
далее:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
if ((string.IsNullOrEmpty(filter2) || string.IsNullOrWhiteSpace(filter2)) 
                    && string.IsNullOrEmpty(date.Text) && !string.IsNullOrEmpty(filter1))
                    _data.RowFilter = filter1;
 
                else if ((string.IsNullOrEmpty(filter2) || string.IsNullOrWhiteSpace(filter2)) 
                    && !string.IsNullOrEmpty(date.Text) && !string.IsNullOrEmpty(filter1))
                    _data.RowFilter = String.Format("({0}) AND ({1})", filter1, filter3);
 
                else if ((string.IsNullOrEmpty(filter1) || string.IsNullOrWhiteSpace(filter1)) 
                    && string.IsNullOrEmpty(date.Text) && !string.IsNullOrEmpty(filter2))
                    _data.RowFilter = filter2;
 
                else if ((string.IsNullOrEmpty(filter1) || string.IsNullOrWhiteSpace(filter1)) 
                    && !string.IsNullOrEmpty(date.Text) && !string.IsNullOrEmpty(filter2))
                    _data.RowFilter = String.Format("({0}) AND ({1})", filter2, filter3);
 
                else if (!string.IsNullOrEmpty(filter1) && !string.IsNullOrEmpty(filter2) 
                    && string.IsNullOrEmpty(date.Text))
                    _data.RowFilter = String.Format("({0}) AND ({1})", filter1, filter2);
 
                else if (!string.IsNullOrEmpty(filter1) && !string.IsNullOrEmpty(filter2) 
                    && !string.IsNullOrEmpty(date.Text))
                    _data.RowFilter = String.Format("({0}) AND ({1}) AND ({2})", filter1, filter2, filter3);
                
 
//filter1 - фильтр по одним значение, незачем вдумываться, с ним все работает все нормально
//filter2 - тоже самое что и сверху
//filter3 - фильтр по времени
не стал писать дальше код, ибо там идет чисто применение фильтра.
Так вот когда я создаю ситуацию когда, срабатывает текст бокс, то
вылетает такая ошибка
C#
1
Невозможно выполнить операцию "Like" над System.DateTime и System.String.
Помогите разрешить проблему
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.02.2015, 13:04
Ответы с готовыми решениями:

Невозможно выполнить операцию "<>" над System.DateTime и System.String
Приложение завершается с ошибкой Невозможно выполнить операцию &quot;&lt;&gt;&quot; над System.DateTime и System.String. Ругается на код ...

Невозможно выполнить операцию 'Like' над System.Int32 и System.String.
Невозможно выполнить операцию 'Like' над System.Int32 и System.String. regBindingSource.Filter = &quot;rn like'&quot; +textBox1.Text +...

Невозможно выполнить операцию "Like" над System.Int32 и System.String
DataView dv = new DataView(dt); dv.RowFilter = string.Format(&quot;id LIKE '%&quot; + textBox1.Text + &quot;%'&quot;); dataGridView1.DataSource = dv; ...

7
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
20.02.2015, 13:27
Цитата Сообщение от MrPhelko Посмотреть сообщение
вылетает такая ошибка
По всей видимости, этот столбец у вас в базе типа DateTime, а вы для выборки передаете строку. Перед передачей в запрос преобразуйте строку в нужный тип.
0
6 / 6 / 5
Регистрация: 23.12.2012
Сообщений: 112
20.02.2015, 14:15  [ТС]
insite2012, Я же писал что в базе у меня datetime, но данные из БД я получаю таким образом
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private DataTable pgSelect()
        {
            try
            {
                pgQuery = new NpgsqlCommand("select*from project ;", pgConnection);
                pgAdapter = new NpgsqlDataAdapter();
                _table = new DataTable();
                pgAdapter.SelectCommand = pgQuery;
                pgAdapter.Fill(_table);
                pgAdapter.Dispose();
                pgQuery.Dispose();
 
                DataView _data = new DataView(_table);
                return _table;
            }
            catch (Exception ex)
            {
                error = ex.Message;
                return null;
            }
        }
и не понимаю куда вставить это конвертирование
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
20.02.2015, 15:41
Цитата Сообщение от MrPhelko Посмотреть сообщение
не понимаю куда вставить это конвертирование
Как куда! Тот источник данных, из которого фильтруете, у него тип столбца - DateTime! А вы ему в условии суете тип string, вот и ошибка. Преобразуйте string в DateTime, ну хоть через DateTime.Parse()
https://msdn.microsoft.com/ru-... .110).aspx
0
6 / 6 / 5
Регистрация: 23.12.2012
Сообщений: 112
20.02.2015, 16:19  [ТС]
insite2012, вот я делаю конвертирование в столбца в стринг таким образом:
C#
1
2
3
4
5
                this.dgArchive.Columns[1].HeaderText = "Время события";
                this.dgArchive.Columns[1].ValueType = typeof (String);
                this.dgArchive.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                this.dgArchive.Columns[1].FillWeight = 0.035f;
                this.dgArchive.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable;
Ошибка таже самая
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
20.02.2015, 20:24
MrPhelko, с чего вы взяли, что для даты можно использовать LIKE? Вам даже СУБД как бы намекает ...
C#
1
filter3 = "@Date IS NULL OR LocalDateTime = @Date"
, где @Date, это параметр, который нужно добавить в запрос. Я использовал синтаксис T-SQL, если для Postgre он иной, надеюсь, сможете сами подправить.
0
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,099
21.02.2015, 13:07
Лучший ответ Сообщение было отмечено MrPhelko как решение

Решение

Цитата Сообщение от MrPhelko Посмотреть сообщение
filter3 = String.Format("[LocalDateTime] LIKE '%{0}%'", str);
замените на
C#
1
filter3 = String.Format("Convert(LocalDateTime,'System.String') LIKE '%{0}%'", str);
1
6 / 6 / 5
Регистрация: 23.12.2012
Сообщений: 112
24.02.2015, 10:21  [ТС]
nedel, Спасибо, так работает. хотя странно я делал так, но не работало, возможно я не правильно указал конвертирование
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.02.2015, 10:21
Помогаю со студенческими работами здесь

Не удалось привести тип объекта "System.DateTime" к типу "System.String"
В Sql есть таблица с типом данных data. Мне нужно, преобразовать этот тип в тот, с которым можно будет работать в C#. Я пытался...

Не удается преобразовать тип String в System.DateTime
string ss = &quot;&quot;; if (radioButton1.Checked == true) { ss = &quot;Бессрочно&quot;; } ...

System.Data.SqlClient.SqlException: "Ошибка преобраз знач varchar "System.Func`1[System.String]" в тип данных int."
Делаю программу где есть кнопки &quot;Сохранение&quot;, &quot;Удаление, &quot;Изменения&quot; для datagridview, кнопка &quot;удаление&quot; строки из БД и...

Исключение [System.Linq.Enumerable+WhereSelectEnumerableIterat­or`2[System.Text.RegularExpressions.Match,System.String]
Здравствуйте ! Нужно объединить textlogin и Result в одну часть, Но появляется ошибка , не могу понять почему , можете...

Преобразование типа "System.DateTime" в "string" невозможно
Есть простая форма. Есть maskedTextBox1.Text. Как сделать так чтобы в maskedTextBox1.Text была сегодняшняя дата при нажатии кнопки? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru