Как указать 12-часовой формат времени в SQL Server 2008
-
27-09-2019 - |
Вопрос
Я использую SQL Server 2008, и у меня есть файл базы данных (MyData.mdf), в котором у меня есть столбец в одной из таблиц, и этот столбец имеет DataType (время).
Я добавил этот файл базы данных на мой проект WPF-C # (с использованием VS2010), но у меня была проблема и ее следующим образом:
Это (время) столбец рассматривает время в 24-часовой системе, но я хочу использовать (12-часовую) систему в моем приложении, поэтому есть ли способ определить 12-часовое системное время в SQL Server2008.
И если нет, что вы думаете, это лучший способ справиться с этим ???
Pleeeeeeeeeeeeease помогу мне как можно скорее, потому что я спешу, и я не могу понять это ...
Решение
Время в базе данных не «отформатировано». Он представлен в некотором внутреннем формате (который вы можете Google, но не должен заботиться о том, что позволяет ему представлять каждый момент в день, к поддерживаемому уровню точности.
Значения отформатированы только тогда, когда ваше приложение преобразует их в строки с целью отображения их пользователю, и у вас полный контроль над этим.
Поэтому, если вы прочитали время в экземпляре класса CLR DateTime, вы можете отображать в виде 12-часового времени (пропуская дату) со значением.тостром («H: MM: SS TT»). Пользовательские параметры форматирования перечислены здесь.
Другие советы
Ответ - это ты не можешь на самом деле, но не волнуйтесь, это не проблема. Формируйте дату в вашем C # код.
Дело в том, что дата и время - это абсолютное значение, которое вы хотите сохранить SQL для хранения, то 12 часов VS 24-часовые часы - просто деталь дисплея, например, 13:00 и 13:00 PM эквивалентны, не Беспокойство о том, как SQL сохраняет его, то в C # используйте следующее, чтобы отобразить его:
DateTime myDateTime = GetTheTimeFromSomeMethod();
myDateTime.ToString("h:mm:ss tt");
Есть много гидов, Это хороший, но есть много других, например, Вот этот
Это должно быть отформатировано из базы данных? C # и WPF обеспечивают множество встроенных вариантов формата даты. Например, проверьте ContentStringFormat
Собственность на этикетке.
Если вы должны сделать это в базе данных, вот грязный обходной путь, который будет работать
Он форматирует дату строки с использованием часов 12H, а затем удаляет дату частью этого
select right(convert(varchar, cast('1/1/2010 23:59:59' as datetime), 100),
charindex(' ', reverse(convert(varchar, cast('1/1/2010 23:59:59' as datetime), 100)))-1)