Вычислите финансовый год в SQL Server

Вы можете использовать

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')
);

Обратите внимание, что вам не нужно экранировать косую черту в нотации конструктора / не является специальным метасимволом регулярных выражений. Двоеточие не должно быть экранировано в любых контекстах регулярных выражений.

16
задан PeeHaa 30 October 2012 в 11:56
поделиться

5 ответов

Я предлагаю вам использовать определяемую пользователем функцию на основе финансового года вашего приложения.

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')
19
ответ дан 30 November 2019 в 15:38
поделиться

Построение на ответе выше @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

я действительно полагаю, что это является самым простым и возможно самая понятная реализация.

0
ответ дан 30 November 2019 в 15:38
поделиться

Для этого вам понадобится более одного поля ...

Вам следует проверить свое определение финансового года, поскольку оно варьируется от компании к компании компания

1
ответ дан 30 November 2019 в 15:38
поделиться

Я не думаю, что можно, потому что универсального финансового календаря не существует. Финансовые годы различаются для разных компаний и стран.

ДОБАВЛЕНИЕ: Вам нужно создать отдельную таблицу БД, состоящую из даты начала финансового года и даты окончания финансового года для каждого применимого года. Используйте данные в этой таблице для расчета финансового года с учетом конкретной даты.

1
ответ дан 30 November 2019 в 15:38
поделиться
CASE WHEN MONTH(@Date) > 10 THEN YEAR(@Date) + 1 ELSE YEAR(@Date) END
10
ответ дан 30 November 2019 в 15:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: