Запрос для даты SQL в C # - PullRequest
0 голосов
/ 23 апреля 2009

Допустим, у меня есть таблица со столбцом даты. В моем приложении C # я хочу иметь возможность запрашивать строки с помощью оператора LIKE в столбце DateTime. Моя проблема в том, как мне обработать региональные настройки?

Например, если текущие региональные настройки установлены на de-DE, формат даты для окон будет dd.mm.yyyy Теперь пользователь может ввести что-то вроде% 2009, что приведет к следующему запросу:

select * from MyTable where to_char(MyDateColumn, 'dd.MM.yyyy') like '%2009'

Но с разными региональными настройками ввод пользователя, конечно, будет выглядеть иначе, поэтому to_char больше не работает.

Как я могу обойти это? О, и я ищу независимое от базы данных решение.

Заранее большое спасибо!

Ответы [ 5 ]

6 голосов
/ 23 апреля 2009

Вы не хотите использовать оператор LIKE в столбце DATETIME, поверьте мне.

select * from MyTable where year(MyDateColumn) = 2009

или

select * from MyTable where datepart(yy, MyDateColumn) = 2009
2 голосов
/ 23 апреля 2009

И особенно, используйте параметризованные запросы для предотвращения атак SQL-инъекций.

2 голосов
/ 23 апреля 2009

Не переводите его в текстовую форму !!!

Используйте DATEPART, чтобы проверить это: http://msdn.microsoft.com/en-us/library/aa258265(SQL.80).aspx

например:

select * from MyTable where DATEPART(year, MyDateColumn) = 2009
1 голос
/ 24 августа 2010

Показать дату в формате dd/mm/yy:

SELECT [Sales_id]
      ,[sales_no]
      ,[sequence_id]
      ,[sales_Date], CONVERT(char(12), sales_Date, 3) as sales_Date1
      ,[Net_Total]
      ,[Roundoff]
     FROM [Furniture].[dbo].[SalesMaster]



288 109 1   2010-08-21 00:00:00.000 21/08/10        1040.00


291 110 1   2010-08-21 00:00:00.000 21/08/10        103.00


294 111 1   2010-08-21 00:00:00.000 21/08/10        7128.00 -0.40

Пожалуйста, обратитесь к http://msdn.microsoft.com/en-us/library/aa172602(SQL.80).aspx

0 голосов
/ 23 апреля 2009

Не сравнивайте даты со строками. Вместо этого используйте что-то вроде функции DATEPART для сравнения только с годом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...