powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Манипуляция с датой и временем
13 сообщений из 13, страница 1 из 1
Манипуляция с датой и временем
    #39840677
Caxa_ASS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Есть следующая задача, которую нужно реализовать в MS T-SQL.

В таблице есть два столбца с датами и временем:

1. Необходимо посчитать разницу (по всем строкам в столбцах), между "Стартовым временем" и "Конечным временем" (Скрин_1), и записать рядом в столбец данную разницу.

2. В результатах разницы, между "Стартовым временем" и "Конечным временем", отсечь год/месяц/день и оставить только время.

Буду благодарен за помощь/подсказки/ссылки и т.д.
...
Рейтинг: 0 / 0
Манипуляция с датой и временем
    #39840681
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Caxa_ASS,

разница может быть определена счетными единицами времени, календарная дата не является счетной единицей.
Т.е. разница дат не может быть датой.
...
Рейтинг: 0 / 0
Манипуляция с датой и временем
    #39840700
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Caxa_ASSДобрый день.

Есть следующая задача, которую нужно реализовать в MS T-SQL.

В таблице есть два столбца с датами и временем:

1. Необходимо посчитать разницу (по всем строкам в столбцах), между "Стартовым временем" и "Конечным временем" (Скрин_1), и записать рядом в столбец данную разницу.

2. В результатах разницы, между "Стартовым временем" и "Конечным временем", отсечь год/месяц/день и оставить только время.

Буду благодарен за помощь/подсказки/ссылки и т.д.




вот вам в секундах. в "часы:минут:секунды" сами переведите
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
;with x as (
	select 
		start_date		= cast('2019-01-01 12:45:00' as datetime2)
		, finish_date	= cast('2019-01-01 13:00:00' as datetime2)
	union all
	select 
		start_date		= cast('2019-01-01 12:45:00' as datetime2)
		, finish_date	= cast('2019-01-05 13:00:00' as datetime2)
	union all
	select 
		start_date		= cast('2019-01-01 12:45:00' as datetime2)
		, finish_date	= cast('2019-01-05 12:00:00' as datetime2)
)




select 
	diff = case when d >= 0 then d else d + 60*60*24 end
from (  
	select 
		d = datediff(ss,  dateadd(dd, datediff (dd, start_date, finish_date), start_date), finish_date)
	from x 
) d
...
Рейтинг: 0 / 0
Манипуляция с датой и временем
    #39840918
Caxa_ASS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для решения воспользовался:

https://docs.microsoft.com/ru-ru/sql/t-sql/functions/datediff-transact-sql?view=sql-server-2017

SELECT DATEDIFF ([minute], 'название_столбца', 'название_столбца');

Всем спасибо!
...
Рейтинг: 0 / 0
Манипуляция с датой и временем
    #39840926
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Caxa_ASSДля решения воспользовался:

https://docs.microsoft.com/ru-ru/sql/t-sql/functions/datediff-transact-sql?view=sql-server-2017

SELECT DATEDIFF ([minute], 'название_столбца', 'название_столбца');

Всем спасибо!

а как же

авторВ результатах разницы, между "Стартовым временем" и "Конечным временем", отсечь год/месяц/день и оставить только время.

Если у вас между стартом и финишем больше суток пройдет, каков будет результат?
...
Рейтинг: 0 / 0
Манипуляция с датой и временем
    #39840995
Caxa_ASS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex,
SELECT DATEDIFF(minute, '2003-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');

согласно селекта выше прошло 2 года, результат 1052641 минут.

или я Вас не понял!?
...
Рейтинг: 0 / 0
Манипуляция с датой и временем
    #39841000
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Caxa_ASSmsLex,
SELECT DATEDIFF(minute, '2003-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');

согласно селекта выше прошло 2 года, результат 1052641 минут.

или я Вас не понял!?

вы же писали, что нужно вот эти "2 года" нужно отбросить.
...
Рейтинг: 0 / 0
Манипуляция с датой и временем
    #39841004
Caxa_ASS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex,

Все отброшено, в чем проблема???
...
Рейтинг: 0 / 0
Манипуляция с датой и временем
    #39841007
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Caxa_ASSmsLex,

Все отброшено, в чем проблема???



а что в вашем понимании
Caxa_ASSотсечь год/месяц/день
?
...
Рейтинг: 0 / 0
Манипуляция с датой и временем
    #39841010
Caxa_ASS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex,

1) Убрать перед минутами год/месяц/день и оставить только время, я это писал в самом 1-м сообщении.
2) Выводить разницу в минутах (целое число) без даты, месяца, дня.

Надеюсь предельно, + в скришоте так же обвел, что мне нужно было.

Вопрос решен, еще раз спасибо за внимание!
...
Рейтинг: 0 / 0
Манипуляция с датой и временем
    #39841049
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Caxa_ASS,

Вы покажете одну минуту, если разница времени будет сутки плюс минута. Так и задумано?
...
Рейтинг: 0 / 0
Манипуляция с датой и временем
    #39841068
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Caxa_ASS
1. Необходимо посчитать разницу (по всем строкам в столбцах), между "Стартовым временем" и "Конечным временем" (Скрин_1), и записать рядом в столбец данную разницу.

2. В результатах разницы, между "Стартовым временем" и "Конечным временем", отсечь год/месяц/день и оставить только время.


DATEDIFF выполняет только первый пункт...
К вопросу о важности понимания и правильного формулирования задачи для ее решения.
...
Рейтинг: 0 / 0
Манипуляция с датой и временем
    #39841192
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовCaxa_ASS,

Вы покажете одну минуту, если разница времени будет сутки плюс минута. Так и задумано?Ну да, алгоритм же описан предельно однозначно.

Хотя задача странная.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Манипуляция с датой и временем
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]