Формат DateTime без преобразования в строку в SQL Server? - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть представление в SQL Server 2012, и есть столбец, содержащий даты ×.Я пытался преобразовать столбец даты в формат «20/10/2018 18:00» (без секунд) с помощью этой функции и множества подходов на Stackoverflow и других веб-сайтах:

 FORMAT(StartDate, 'dd.mm.yyyy hh:mm')

ОднакоТак как тип данных этого столбца Varchar (String), а не DateTime, я столкнулся с некоторыми проблемами на стороне C #, и я хочу выполнить это преобразование на стороне базы данных без изменения типа данных сгенерированного формата).Есть ли способ добиться этого?

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Я бы перенес этот столбец в datetime (или какой-либо другой вариант), если это возможно.В качестве альтернативы, если это повлияет на слишком много вещей, вы можете создать вычисляемый столбец в таблице, который преобразует имеющуюся строковую дату в datetime.Таким образом, база данных вообще не должна заботиться о форматировании;он просто работает с правильным типом данных DateTime.

Если ни один из них не является опцией, вы можете просто вставить строку в C # и использовать DateTime.TryParse(), чтобы преобразовать ее в объект C # DateTime.

В любом случае предпочтительно работать с датой как DateTime вплоть до самой последней минуты, когда вам нужно отформатировать ее для отображения где-либо.

0 голосов
/ 14 сентября 2018

SQL Server сам по себе не имеет «формата даты».Форматирование полей даты и времени выполняется только при представлении даты и времени на выходе, то есть при преобразовании его в строку.

Существует формат представления по умолчанию, который управляется настройкой параметров сортировки сервера.Однако внутренне дата хранится в виде числового значения (фактический формат зависит от типа, поскольку datetime и datetime2 имеют разные внутренние форматы), и это значение не имеет связанного форматирования.

Вы можете сохранитьдата без секунд, используя поле smalldatetime или манипулируя входными данными, чтобы обрезать значение секунд.Но до тех пор, пока вы не сохраните дату в виде строки, которая абсолютно не рекомендуется , вы не сможете сохранить выходной формат, отличный от формата, управляемого по умолчанию, в поле даты и времени.

...