Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подсчёт количества прошедших дней со дня начала года  [new]
Vlad__i__mir
Member

Откуда:
Сообщений: 143
Здравствуйте!

Подскажите как подсчитать количество прошедших дней со дня начала года?
Проблема в получение значения даты начала текущего года. Как её определить?

После того как получим дату начала текущего года предполагаю, что можно будет сделать так:

DATADIFF (day, GETDATE(), Дата_начала_года)


Поправьте пожалуйста моё предположение если оно не верно.
Не нужно-ли использовать SELECT при запросе текущей даты?
4 янв 19, 22:07    [21778574]     Ответить | Цитировать Сообщить модератору
 Re: Подсчёт количества прошедших дней со дня начала года  [new]
londinium
Member

Откуда: Киев
Сообщений: 1048
Vlad__i__mir,
автор
Проблема в получение значения даты начала текущего года. Как её определить?

Вот так: https://www.sql.ru/faq/faq_topic.aspx?fid=998
USE MASTER
GO

DECLARE @InCurrentDate DATE;
DECLARE @InNewYearDate DATE;

SELECT @InCurrentDate=GETDATE();

SELECT @InNewYearDate=CAST(DATENAME(YEAR,@InCurrentDate)AS DATE);

SELECT @inCurrentDate AS CurrentDate,@InNewYearDate AS NewYearDate,
DATEDIFF(DD,@InNewYearDate,@InCurrentDate)AS DateDifff;
4 янв 19, 22:19    [21778578]     Ответить | Цитировать Сообщить модератору
 Re: Подсчёт количества прошедших дней со дня начала года  [new]
invm
Member

Откуда: Москва
Сообщений: 8302
Vlad__i__mir
Подскажите как подсчитать количество прошедших дней со дня начала года?
select datepart(dy, getdate());
4 янв 19, 22:31    [21778585]     Ответить | Цитировать Сообщить модератору
 Re: Подсчёт количества прошедших дней со дня начала года  [new]
Vlad__i__mir
Member

Откуда:
Сообщений: 143
londinium, спасибо!

А если у меня в таблице несколько разных годов и год с датой я тоже указываю в соседнем столбце, можно ли прописать функцию, которая бы считала количество дней для указанного года и даты? Или это придётся делать через создание дополнительного представления?
4 янв 19, 23:01    [21778592]     Ответить | Цитировать Сообщить модератору
 Re: Подсчёт количества прошедших дней со дня начала года  [new]
londinium
Member

Откуда: Киев
Сообщений: 1048
Vlad__i__mir
londinium, спасибо!

А если у меня в таблице несколько разных годов и год с датой я тоже указываю в соседнем столбце, можно ли прописать функцию, которая бы считала количество дней для указанного года и даты? Или это придётся делать через создание дополнительного представления?


--ваша таблица
WITH TAB AS
(
  SELECT 1 AS ID,CAST(GETDATE() AS DATE)AS DAteColumn
   UNION ALL
  SELECT 2 AS ID,'20170831'AS DateColumn
   UNION ALL
  SELECT 3 AS ID,'20050502'AS DateColumn
   UNION ALL
  SELECT 4 AS ID,'20121117'AS DateColumn   
)
SELECT T.ID,T.DateColumn,
CAST(DATENAME(YEAR,T.DateColumn)AS DATE)AS FirstYearDate,
DATEDIFF(DD,CAST(DATENAME(YEAR,T.DateColumn)AS DATE),T.DateColumn)AS DaysDifference
FROM TAB T;
4 янв 19, 23:19    [21778599]     Ответить | Цитировать Сообщить модератору
 Re: Подсчёт количества прошедших дней со дня начала года  [new]
iap
Member

Откуда: Москва
Сообщений: 46536
Vlad__i__mir
londinium, спасибо!

А если у меня в таблице несколько разных годов и год с датой я тоже указываю в соседнем столбце, можно ли прописать функцию, которая бы считала количество дней для указанного года и даты? Или это придётся делать через создание дополнительного представления?
invm же вам написал уже:
DATEPART(DayOfYear, <ВашаДата(любая,вТомЧислеПолеТаблицы)>)
5 янв 19, 13:19    [21778708]     Ответить | Цитировать Сообщить модератору
 Re: Подсчёт количества прошедших дней со дня начала года  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 252
Если так?
Datefromparts(Year,1,1)
5 янв 19, 13:43    [21778720]     Ответить | Цитировать Сообщить модератору
 Re: Подсчёт количества прошедших дней со дня начала года  [new]
Vlad__i__mir
Member

Откуда:
Сообщений: 143
invm, Спасибо! Получилось
5 янв 19, 18:22    [21778836]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить