Вы можете использовать
new RegExp('https://'+hostname_match+'/(\\S*)', 'g')
Здесь .*
заменяется на \S*
, совпадающих с нулем или более непробельных символов.
См. Демонстрацию JS:
var string = 'https://sub.example.com/dir/ https://sub.example.com/dir/v2.5/'
var hostname = 'sub.example.com';
var hostname_match = hostname.replace(/\./g, '\\.');
console.log(
string.replace(new RegExp('https://'+hostname_match+'/(\\S*)', 'g'), '/$1')
);
Обратите внимание, что вам не нужно экранировать косую черту в нотации конструктора /
не является специальным метасимволом регулярных выражений. Двоеточие не должно быть экранировано в любых контекстах регулярных выражений.
Я предлагаю вам использовать определяемую пользователем функцию на основе финансового года вашего приложения.
CREATE FUNCTION dbo.fnc_FiscalYear(
@AsOf DATETIME
)
RETURNS INT
AS
BEGIN
DECLARE @Answer INT
-- You define what you want here (September being your changeover month)
IF ( MONTH(@AsOf) < 9 )
SET @Answer = YEAR(@AsOf) - 1
ELSE
SET @Answer = YEAR(@AsOf)
RETURN @Answer
END
GO
Используйте ее следующим образом:
SELECT dbo.fnc_FiscalYear('9/1/2009')
SELECT dbo.fnc_FiscalYear('8/31/2009')
Построение на ответе выше @csaba-toth, и принятие Вашего финансового года запускается в первый день месяца
year(dateadd(month, (12 -
FyStartMonth + 1), <date>)
, который Мой финансовый год запускает 1 июля, 7-й месяц, таким образом, моя константа (12 - 7 + 1 =) 6.
Тесты (с 25 сентября 2019):
select year(dateadd(month, 6, getdate()))
, year(dateadd(month,6, '1/1/2020'))
, year(dateadd(month, 6, '7/1/2020'))
, year(dateadd(month, 6, '6/30/2020'))
Возвраты:
2020 2020 2021 2020
я действительно полагаю, что это является самым простым и возможно самая понятная реализация.
Для этого вам понадобится более одного поля ...
Вам следует проверить свое определение финансового года, поскольку оно варьируется от компании к компании компания
Я не думаю, что можно, потому что универсального финансового календаря не существует. Финансовые годы различаются для разных компаний и стран.
ДОБАВЛЕНИЕ: Вам нужно создать отдельную таблицу БД, состоящую из даты начала финансового года и даты окончания финансового года для каждого применимого года. Используйте данные в этой таблице для расчета финансового года с учетом конкретной даты.
CASE WHEN MONTH(@Date) > 10 THEN YEAR(@Date) + 1 ELSE YEAR(@Date) END