Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
12 / 12 / 2
Регистрация: 06.06.2012
Сообщений: 97

Entity и SQL, формат даты

02.06.2017, 15:00. Показов 3047. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане. Есть вот такой код.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
DateTime dt = DateTime.Parse("23.05.2017");
            using (money_real_4Entities context = new money_real_4Entities())
            {
                var items = from s in context.Service
                            join req in context.Request on s.Id equals req.ServiceId
                            join res in context.Response on req.Id equals res.RequestId
                            where s.Id == 59 && req.OnDate.Value == dt
                        select new
                        {
                            Title = s.Title,
                            Number = req.NUMBER,
                            Date = req.OnDate,
                            resAccount = res.ACCOUNT,
                            resAddinfo = res.ADDINFO,
                            resAddparams =  res.ADDPARAMS
            };
 
                //var id = q.Single();
                foreach (var item in items)
                {
                    richTextBox1.AppendText(item.Date + "\n");
                }
            }
Подскажите как сделать сравнение по дате.
C#
1
req.OnDate.Value == dt
Вот эта конструкция естественно не работает. так как в базе время выглядит вот так 23.05.2017 16:57:26
23.05.2017 17:20:13
23.05.2017 17:22:53
23.05.2017 17:24:55
23.05.2017 17:48:01
т.е. присутствую еще часы, минуты и секунды. Вот так
C#
1
req.OnDate.Value.Date == dt
я не могу сделать, потому что данного метода нет в SQL, и при трансляции запроса происходить ошибка. Можно в запросе указать загрузку в локальную память ToList(). Но тогда время запроса вырастает в несколько раз. Что меня естественно не устраивает. В Transact SQL, я без проблем писал вот такую штуку
T-SQL
1
set dateformat ymd
и не имел проблем. Еще можно сделать под-запрос, но опять же это время выборки. Не может быть, что бы не было выхода. Возможно, я не до конца въехал в тему. Будьте добры дайте решение.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.06.2017, 15:00
Ответы с готовыми решениями:

SQLite + Entity задать формат даты
Доброго времени суток. Продолжаю осваивать Entity... Таблица SQLite содержит поле даты, задал тип INTEGER, чтобы хранилось в формате...

Формат даты в SQL
Вот столкнулся с такой проблемой - нужно из базы считать записи по соответствующим датам, но проблема возникает при сравнении дат: ...

Формат даты в MS SQL 7
Есть проблема: MS SQL 7 периодически меняет формат вывода даты с dmy на mdy. Причину отследить не смог. Конструкция типа SetDateFormat...

6
Злой самаритянин
182 / 182 / 94
Регистрация: 24.04.2014
Сообщений: 686
02.06.2017, 15:12
C#
1
req.OnDate.Value > dt && req.OnDate.Value <= dt.Date.AddDays(1).AddTicks(-1)
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
02.06.2017, 15:13
Цитата Сообщение от speed5.Mexanik Посмотреть сообщение
Подскажите как сделать сравнение по дате.
C#
1
EntityFunctions.TruncateTime(req.OnDate.Value) == dt
0
12 / 12 / 2
Регистрация: 06.06.2012
Сообщений: 97
02.06.2017, 15:57  [ТС]
Цитата Сообщение от SHIFT_969 Посмотреть сообщение
req.OnDate.Value > dt && req.OnDate.Value <= dt.Date.AddDays(1).AddTicks(-1)
Вот такая ошибка, что и логично.
System.NotSupportedException: "Выражению LINQ to Entities не удается распознать метод "System.DateTime AddTicks(Int64)", поэтому его нельзя преобразовать в выражение хранилища."

Добавлено через 1 минуту
Цитата Сообщение от freeba Посмотреть сообщение
EntityFunctions.TruncateTime(req.OnDate. Value) == dt
Не нашел у меня EntityFunctions.TruncateTime. Возможно из за того ,что пишу задачу под Fraemwork 3.5. Так, что нахожусь на том же месте, что и до этого ))
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
02.06.2017, 16:01
speed5.Mexanik, т.е. загуглить что такое EntityFunctions и как работают не получается? Печаль, печаль.
Кликните здесь для просмотра всего текста
Подключите пространство имен System.Data.Objects из сборки System.Data.Entity
1
Злой самаритянин
182 / 182 / 94
Регистрация: 24.04.2014
Сообщений: 686
02.06.2017, 16:36
Лучший ответ Сообщение было отмечено speed5.Mexanik как решение

Решение

freeba, мне почему-то кажется, что не захавает. Но это не точно.
C#
1
2
3
4
DateTime dt = DateTime.Parse("23.05.2017");
DateTime endOfDay = dt.Date.AddDays(1).AddTicks(-1);
// ....
req.OnDate.Value > dt && req.OnDate.Value <= endOfDay
Можно было бы и самому подумать...
1
12 / 12 / 2
Регистрация: 06.06.2012
Сообщений: 97
02.06.2017, 17:52  [ТС]
Цитата Сообщение от freeba Посмотреть сообщение
speed5.Mexanik, т.е. загуглить что такое EntityFunctions и как работают не получается? Печаль, печаль.
Вы знаете, никакими силами мне не удалось подключить это пространство. Fraemwork 3.5. Библиотеку entyti юзал и 3.5 и 6.1. Подключаю 6.1 предлагает вместо EntityFunctions использовать DbFunction. Но по всему проекту выбивает большое количество ошибок. Если же использую 3.5 entity, какое бы пространство имен я не импортировал, все равно эту функцию проект не видит. Я почему задал, такой вопрос вверху, если бы я студия увидел ссылку на пространство имен, она бы предложила подключить автоматически. Но этого не произошло, поэтому я так и удивился. Постараюсь все таки разобраться. Спасибо. Ответ
Цитата Сообщение от SHIFT_969 Посмотреть сообщение
Можно было бы и самому подумать...
Мне подошел. Всем спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.06.2017, 17:52
Помогаю со студенческими работами здесь

Формат даты в MS SQL 7.0
А есть ли способ 'навечно' поменять в сервере формат даты (DATEFORMAT) на dmy? Ведь SET DATEFORMAT, как следует их его описания работает...

Формат даты ms sql server
Здравствуйте ребята . Мне интересно как изменить формат даты на MS SQL сервере ? Мне надо что при выбору таблицу , поля дата...

Формат даты на SQL-сервере
Не могу решить такую проблему. Есть два SQL-сервера. На одном из них при обнавления поля типа smalldatetime из Ассess2000 командой...

Формат даты в ms sql server
Подскажите пожалуйста на одном сервере запрос: UPDATE mgsk.dbo.SensorPlaces SET instDate ='2017-06-30' WHERE sensorPlaceID = '12' ...

SQL и формат даты mm/dd/yyyy.
Есть код, исполузуется MS SQL dn=Now() Set rs = Server.CreateObject('ADODB.Recordset') SQL = 'INSERT INTO news(data) values (''...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru