2016-02-03 2 views
0

SQL Server 2008. Есть ли способ объединить нижеследующее и удалить 00:00:00:000?Конкатенация DATEADD & DATEPART

* Edit - fulldate столбец содержит список дат

SELECT DISTINCT 
    DATEADD(dd, -(DATEPART(dw, fulldate)-1), fulldate) [WeekStart], 
    DATEADD(dd, 7- (DATEPART(dw, fulldate)), fulldate) [WeekEnd] 
FROM time 
WHERE YEAR(time) >= 2016 
ORDER BY WeekStart 

Результаты:

WeekOf

12-27-2015-01-02-2016 

Etc ...

+0

В SQL Server вы не можете 'ORDER BY' псевдоним – Serpiton

+0

@Serpiton - да, вы можете. –

ответ

1

Так как dateadd возвращается date не струнные - вам нужно преобразовать ваши значения в строки fi сначала с помощью соответствующего format (110 в вашем случае), а затем объединить их:

select distinct 
    convert(nvarchar(20), DATEADD(dd, -(DATEPART(dw, fulldate)-1), fulldate), 110) + '-' + 
    convert(nvarchar(20), DATEADD(dd, 7- (DATEPART(dw, fulldate)), fulldate), 110) as WeekOf 
from time 
where YEAR(time) >= 2016 
order by WeekStart 
+0

Я получаю сообщение об ошибке, nvarchar 'не является признанным встроенным именем функции. –

+0

@MrJohn oops, это была опечатка в ответе. Он должен быть «конвертировать» вместо «cast». –

+0

Извините, что снова потрудился, можно ли возвращать год и столетие для созданного столбца WeekOf? –

Смежные вопросы