Skip to content

Instantly share code, notes, and snippets.

@Kegnar
Created March 2, 2026 15:46
Show Gist options
  • Select an option

  • Save Kegnar/8d7e10a4f49668f0dd634e23899537d1 to your computer and use it in GitHub Desktop.

Select an option

Save Kegnar/8d7e10a4f49668f0dd634e23899537d1 to your computer and use it in GitHub Desktop.
/*TODO: 1. Написать функцию GetNextLearningDay, которая определяет в какой день недели будет следующее занятие у группы;
2. Написать функцию GetNextLearningDate, которая определяет дату следующего занятия у группы;
3. При выставлении расписания нужно предусмотреть каникулы и праздничные дни;
4. Посчитать зарплату преподавателям;*/
USE PV_521_Import
GO
--1
CREATE OR ALTER FUNCTION GetNextLearningDay(@group AS INT) RETURNS DATE
AS
BEGIN
RETURN DATENAME(WEEKDAY, (SELECT TOP 1 date
FROM Schedule
WHERE [group] = 521
AND date >= CAST(GETDATE() AS DATE))) --вытаскиваем только день недели из datetime
END;
--2
CREATE OR ALTER FUNCTION GetNextLearningDate(@group AS INT) RETURNS DATE
AS
BEGIN
RETURN (SELECT TOP 1 date
FROM Schedule
WHERE [group] = 521
AND date >= CAST(GETDATE() AS DATE)) --вытаскиваем только день недели из datetime
END;
--3
CREATE OR ALTER FUNCTION CheckIfHoliday(@date AS DATE) RETURNS BIT
AS
BEGIN
DECLARE @day AS TINYINT = (SELECT day FROM Holidays)
DECLARE @month AS TINYINT = (SELECT month FROM Holidays)
DECLARE @year AS INT = (YEAR(@date))
DECLARE @check_date AS DATE = DATEFROMPARTS(@year, @month, @day)
RETURN IIF(@check_date = @date, 1, 0)
END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment