Это незначительный момент, но стоит отметить, что все запросы, представленные к SQL Server, находятся в TEXT. На каком-то этапе, основываясь на некоторых настройках языка и перевода на уровне доступа к данным (OLEDB, Native, ADO), он превращается в текстовую форму, поэтому даты всегда представляются в виде «текста».
Лучший формат для использования всегда YYYYMMDD для SQL Server. Даже МГГГ-ММ-ДД может быть неправильным, из-за неясных настроек формата даты. Смотрите этот пример.
set dateformat dmy -- more than common for non-US locations
select CONVERT(varchar, convert(datetime, '2010-12-31'), 112)
Не удается .
Msg 242, Level 16, State 3, Line 3
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
Это относится к формату, который нужно использовать, когда вам нужно построить дату, встроенную в оператор SQL. Тем не менее, если это возможно, просьба параметризировать запросы для получения таких преимуществ, как
- предотвращение внедрения SQL
- позволяя уровню связности db обеспечивать правильные форматы при генерации TSQL
- план запроса повторно использовать на SQL Server
- пункт 3 = более эффективные запросы и более эффективный SQL Server