SELECT [key], CONVERT(varchar(30), CAST([key] as datetime), 103) as strDate
с вашим кодом формата, выбранным из
https://www.w3schools.com/sql/func_sqlserver_convert.asp
+++++
ваша дата в формате iso в виде строки, поэтому просто изменить ее на тип даты, а затем отформатировать тип даты с помощью встроенных функций SQL
Единственная вещь, которая сразу кажется очевидной для меня, состоит в том, что статический класс является в основном просто набором ограниченных по объему функций (явно избегающий "методов" здесь), и одиночный элемент - все еще что-то, чего можно инстанцировать, даже если Вы можете только иметь 1. 1> 0.
Можно передать одиночный элемент как аргумент чему-то, что ожидает объект определенного интерфейса, Вы не можете передать статический класс никуда (кроме посредством некоторого отражательного обмана)
Во многих отношениях статический класс и одиночный элемент подобны. Одна большая разница - то, что одиночный элемент мог бы реализовать некоторые интерфейсы, который не возможен со статическим классом. Например, Comparer<T>.Default
/ EqualityComparer<T>.Default
обеспечьте (через интерфейс) способность использовать объект в сортировке / использование словаря.
Также возможно (хотя хитрый) использовать одиночный элемент со стандартными платформами сериализации. Со статическим классом необходимо было бы управлять любой персистентностью состояния вручную.
Это не точно эквивалентно. Например, можно передать ссылку на одноэлементный экземпляр как аргумент, который Вы не можете сделать со статическим классом, поскольку нет экземпляра.
Что Вы подразумеваете под "опасностью"?
Как Robert Gould указал, Вы освобождаете управление конструкцией. Вы также получите проблемы конструкции, которые намного более неясны. Статические классы быстро заканчиваются со статическими блоками инициализатора. Эти блоки называют в первый раз, когда кто-то ссылается на Ваш тип, и этот порядок не может быть также определен, поскольку Вам нравится думать. Таким образом, порядок выполнения этих статических инициализаторов может измениться без Вас планирующий так и может вызвать странные ошибки.
Основная опасность, что я вижу со статическими классами, состоит в том, что их намного более трудно дразнить при записи модульных тестов. С одиночным элементом можно создать его таким способом, которым можно ввести другой класс в его месте, которое действительно тестирует определенную функциональность со статическим классом, это не настолько легко.
Не уверенный в C#, но в C++ статический объект будет инициализирован, когда он будет инициализирован, и у Вас нет прямого управления тем (особенно в многопоточных приложениях). Таким образом, Вам нужна функция для вызова объекта, не только называют его непосредственно (если Вы не хотите непортативный код),
В контексте одноэлементной реализации нет никакой опасности, я думаю. Я часто делаю то же, реализовывая singletone через статический класс. Логически, ссылка на объект не необходима, если это является одним и уникальным.
Как Robert сказал прежде, инициализация является основным недостатком статического класса. Статический класс будет обычно инициализироваться лениво в прошлый момент. Однако Вы теряете контроль над точным поведением, и статические конструкторы являются медленными.
Часто статические классы используются для содержания глобальных данных. И глобальные данные создают неявную зависимость между Вашими другими объектами / классы. Таким образом, необходимо быть carful при изменении этого "глобального объекта". Может повредить Ваше приложение.