Поле даты и времени с использованием военного времени - нужно время только в стандартном времени - PullRequest
4 голосов
/ 03 февраля 2012

У меня есть поле даты и времени в SQL Server 2008, в котором дата и время хранятся в военном формате (или в международном формате, если вы предпочитаете)только часть времени в стандартном американском формате времени.

Итак

2011-02-15 10:00:00.000    needs to become 10:00 AM
2011-02-15 15:30:00.000    needs to become 3:30 PM
2011-02-15 17:30:00.000    needs to become 5:30 PM

Я ищу лучший способ сделать это в T-SQL, пожалуйста.

Ответы [ 3 ]

11 голосов
/ 03 февраля 2012

Один из способов:

Конвертировать в varchar, который даст вам:

Select CONVERT(varchar, @dt, 100) -- where @dt is your date time

15 февраля 2011 15:30

Впоследствии, чтобы убрать дату и получить 7 символов справа, что является наибольшим, и TRIM добавлен только для дополнительной безопасности, но, вероятно, не требуется.

Select LTRIM(RIGHT(CONVERT(varchar, @dt, 100),7))

Даст вам 3:30 PM

Примечание: Денали делает это проще, никаких магических чисел

1 голос
/ 03 февраля 2012

Поскольку вы запрашивали это в T-SQL, вы можете захотеть взглянуть на синтаксис CAST и CONVERT , в котором конкретно перечислены различные форматы даты и времени.

Например:

select convert(varchar, getdate(), 100)

даст вам:

Feb 3 2012 3:26PM

1 голос
/ 03 февраля 2012

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

* намного лучше, если приложение решит форматирование, чем форматирование в SQL.

См. стандарт и custom Строки формата даты и времени для получения дополнительной информации.

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