2011-12-24 6 views
1

Я пытаюсь сравнить две даты, которые находятся в двух различных форматах:Linq To SQL - сравнение двух дат в двух различных форматах

 var messages = (from m in db.ChatMessages 
         where m.RoomID == roomID && 
         m.MessageID > messageID && 
         m.MessageTime > timeUserJoined.AddSeconds(1) 
         orderby m.MessageTime ascending 
         select new { m.MessageID, m.Text, m.User.username, m.MessageTime, m.Color }); 

Моя проблема заключается в том, что мои таблицы базы данных хранятся DateTime поля в формате США т.е. 12/24/2011 1:35:11 PM. Таким образом, в приведенном выше запросе, линия m.MessageTime> timeUserJoined.AddSeconds (1) может быть 12/24/2011 1:35:11 PM> 24/12/2011 13:35:11 PM

Как я обойду это - сравнивая две даты в двух разных форматах и ​​каковы лучшие практики?

На мессе я не получаю никаких записей назад, я думаю, из-за этих проблем сравнения?

Большое спасибо :)

+2

Я сомневаюсь, что формат 'DateTime' не имеет ничего общего с вашей проблемой. Используйте [Linq2Sql визуализатор] (http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx), чтобы получить SQL-запрос, и посмотрите, похоже ли оно SQL, которого вы ожидаете. – dasblinkenlight

ответ

2

Вы их состояния DateTime поля ... Тогда хорошие новости; DateTime в .NET и TSQL не имеет любого формата - это всего лишь номер. Любой конкретный формат, который вы видите, существует только в воображении вашей среды IDE или других инструментов (SSMS и т. Д.).

До тех пор, пока это DateTime, здесь проблем не будет.

+1

Точно верно. Фактически, в Linq to SQL это преобразуется в SQL-запрос. И SQL будет сравнивать их с использованием собственного форматирования и операций, независимо от конкретного формата презентации в вашем приложении. – GalacticCowboy

0

Во-первых, я считаю, что вы должны использовать DateTime.CompareTo() для сравнения временных меток.

Во-вторых, как вы потребляете сбор сообщений? Вы знаете, что это коллекция анонимных, нетипизированных объектов?

(я бы комментировать, но у меня нет респ)

+1

Я не согласен на CompareTo: '>' отлично, и гораздо более читаемый IMO. –

+0

Anonymous! = Нетипизирован. –

+0

Правда, я отредактировал, чтобы это отразить. – Immersive