Есть ли способ получить «День недели»

#sql #sql-server

#sql #sql-сервер

Вопрос:

К DAYOFTHEWEEK сожалению, функция не встроена в SQL Server — есть ли какие-либо эквиваленты? Я смог найти только функции, которые предоставляют номер дня (1-31), но не фактическое название дня.

Ответ №1:

SQL Server имеет две функции, в зависимости от того, нужна ли вам строка или число:

 [datepart(weekday, col)][1]
[datename(weekday, col)][1]
  

Вы также можете использовать format() со 'dddd' спецификацией:

 format(col, 'dddd')
  

Это удобно, потому 'ddd' что дает вам трехбуквенную аббревиатуру. И format() допускает третий аргумент, в котором вы можете указать культуру — например, обеспечить, чтобы значение было на английском языке.

Комментарии:

1. Большое спасибо за ответ, похоже, что именно аргумент «будний день» был тем, чего мне не хватало!

Ответ №2:

используйте datename вместо datepart с теми же параметрами, чтобы получить имя вместо номера

Комментарии:

1. Хм, я только что попробовал это, и он вернул значение дня (1-31), а не имя.

Ответ №3:

Ниже должно быть сделано. Параметр должен немного отличаться от datepart . Используйте W вместо week

 select datename(W, '2020-02-02' ) 
  

Комментарии:

1. Хм, я только что попробовал это, и он вернул значение дня (1-31), а не имя.

2. @CluelessBSA Это странно. dbfiddle.uk /…