У меня есть дата в следующем форматеДата преобразования в SQL Server
'2013-09-22 00:00:00.000'
мне нужно это в 22-09-2013, Sunday
и 22-Sep-2013, Sunday
форматах. Я нахожу любую функцию преобразования, чтобы получить дни вместе с.
Благодаря
У меня есть дата в следующем форматеДата преобразования в SQL Server
'2013-09-22 00:00:00.000'
мне нужно это в 22-09-2013, Sunday
и 22-Sep-2013, Sunday
форматах. Я нахожу любую функцию преобразования, чтобы получить дни вместе с.
Благодаря
Я думаю, вам нужно использовать CONVERT() и DATENAME() функции, как показано ниже:
1) select CONVERT(varchar(20), getdate(),105) + ',' + datename(DW, getdate())
2) select REPLACE(CONVERT(varchar(20), getdate(),106),' ','-') + ',' + datename(DW, getdate())
Результат
07-11-2013, Thursday and 07-Nov-2013, Thursday
SELECT REPLACE(REPLACE(CONVERT(VARCHAR(11), GETDATE(), 103), ' ', '-'), '/', '-') + ', ' + datename(dw,getdate()) AS [DD-Mon-YYYY];
И
SELECT REPLACE(REPLACE(CONVERT(VARCHAR(11), GETDATE(), 106), ' ', '-'), '/', '-') + ', ' + datename(dw,getdate()) AS [DD-Mon-YYYY];
Выход:
07-11-2013, Thursday
и 07-Nov-2013, Thursday
(Вы, возможно, не нужна функция первого REPLACE. Без него вторая дата для меня показалась 07/11/2013, Thursday
. Замена просто заменяет '/'
'-'
, как вы указали).
Я согласен с другими, предполагая, что преобразование должно обрабатываться в клиентском приложении. Особенно, если приложение будет использоваться в разных часовых поясах. Жесткое кодирование формата даты в SQL тогда могло бы привести к путанице.
Даты, хранящиеся на SQL-сервере без какого-либо формата. Это клиентское приложение (например, ssms) форматирует дату.
Если вам нужно отформатировать дату на стороне сервера, вы можете преобразовать ее в varchar, используя функции CAST or CONVERT.
SELECT CONVERT(varchar(50),@date,110)+', '+ DATENAME(weekday, GETDATE())
Вы можете написать как:
SELECT CONVERT(VARCHAR(10), GETDATE(), 105) + ', '+ DATENAME (weekday ,GETDATE()) AS [DD-MM-YYYY, DAY],
REPLACE(CONVERT(VARCHAR(11), GETDATE(), 106), ' ', '-') + ', '+ DATENAME (weekday ,GETDATE()) AS [DD-Mon-YYYY, DAY]
Я думаю, вам нужно использовать предложение COLLATE, чтобы выбрать другую локаль и, таким образом, формат заявления: http://technet.microsoft.com/en- us/library/ms184391.aspx – Tobberoth
Почему бы вам не сделать это на своем слое презентации? – u07ch
@ u07ch: Я использую это только в одно время и используется для извлечения отчета. Поэтому не нужно уделять внимание часовому поясу. в любом случае. Спасибо за информацию. –