Я не получил файлы во время праздников, например: День труда 2021-09-06. Я получил файлы только в выходной / обычный день. Я хочу пропустить 2021-09-06, так как сейчас праздник, и я не получил файлы, а получу новый файл 2021-09-07, так как я получу файл. Я создал автоматическую функцию логики пропуска для праздников, которая отлично работает в sql. Я вызываю ту же функцию в C # и просто хочу убедиться, что код C # правильный.
Это функция sql со скалярным значением. Я запустил функцию в SQl и взамен поставил новую дату 2021-09-07.
IF OBJECT_ID('dbo.usfGetMGAHolidayCalendar') IS NOT NULL
DROP FUNCTION dbo.usfGetMGAHolidayCalendar;
GO
CREATE FUNCTION dbo.usfGetMGAHolidayCalendar(@HolidayDate DATE)
RETURNS DATE
AS
BEGIN
DECLARE @MGAID INT = 1,
@SCJMGAID INT=8,
@ARSMGAID INT=16,
@MaskDate DATETIME = '2021-09-06', /*Single day holiday example*/
--@MaskDate DATETIME = '2021-11-25', /*Two day holiday example*/
@NewMaskDate DATETIME,
@IsMGAHolidayCalendar INT = 0;
SET @IsMGAHolidayCalendar=
(
SELECT COUNT(HolidayDate)
FROM xml.MGAHolidayCalendar
WHERE HolidayDate = @MaskDate
);
IF @IsMGAHolidayCalendar > 0
SET @NewMaskDate= DATEADD(dd, 1,@MaskDate)
ELSE
SET @NewMaskDate=@MaskDate
SET @IsMGAHolidayCalendar =
(
SELECT COUNT(HolidayDate)
FROM xml.MGAHolidayCalendar
WHERE HolidayDate=@NewMaskDate
);
IF @IsMGAHolidayCalendar = 1
SET @NewMaskDate = DATEADD(dd, 1,@NewMaskDate)
ELSE
SET @NewMaskDate = @NewMaskDate
RETURN @NewMaskDate;
END;
GO
Я вызываю эту функцию в C #. Я хочу, чтобы функция возвращала NewFileMask
в этом формате даты, mm-dd-yyyy
. Я не хочу, чтобы время было включено в дату.
Я так и сделал, но не уверен, правильно ли это.
static void Main(string[] args)
{
// Set the connection string//
string connString = @"Server=.SQL2k17; Database = SampleDB; Trusted_Connection = True;";
try
{
// sql connection object
using (SqlConnection conn = new SqlConnection(connString))
{
// define the query text
string query = @"SELECT DISTINCT dbo.usfGetMGAHolidayCalendar(@HolidayDate) AS NewFileMask;";
// define the SqlCommand object
SqlCommand cmd = new SqlCommand(query, conn);
// parameter value will be set from command line
SqlParameter param1 = new SqlParameter();
param1.ParameterName = "@HolidayDate";
param1.SqlDbType = SqlDbType.Date;
param1.Value = "2021-09-07";
// pass parameter to the SQL Command
cmd.Parameters.Add(param1);
// open connection
conn.Open();
// execute the SQLCommand
DateTime functionResult = (DateTime)cmd.ExecuteScalar();
Console.WriteLine(Environment.NewLine + "Retrieving data from database..." + Environment.NewLine);
Console.WriteLine("Retrieved result:");
// display retrieved result
Console.WriteLine("NewFileMask:{0}", functionResult.ToString("MM-dd-yyyy));
// close connection
conn.Close();
}
}
catch (Exception ex)
{
// display error message
Console.WriteLine("Exception: " + ex.Message);
}
}