财政年度的第一天是4月1日。
T-SQL查询将返回getdate()
的4月1日
财政年度:4月1日至3月31日
答案 0 :(得分:2)
尝试一下:
@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport {
@Bean
public SecurityConfiguration security() {
return SecurityConfigurationBuilder.builder()
.clientId("12345")
.clientSecret("12345")
.scopeSeparator(" ")
.useBasicAuthenticationWithAccessCodeGrant(true)
.build();
}
@Bean
public Docket productApi() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.xompare.moo.controllers"))
.build()
.securitySchemes(Arrays.asList(securityScheme()))
.securityContexts(Arrays.asList(securityContext()))
.apiInfo(metaData());
}
private SecurityContext securityContext() {
return SecurityContext.builder()
.securityReferences(Arrays.asList(new SecurityReference("spring_oauth", scopes())))
.forPaths(PathSelectors.regex("/.*"))
.build();
}
private AuthorizationScope[] scopes() {
AuthorizationScope[] scopes = {
new AuthorizationScope("read", "for read operations"),
new AuthorizationScope("write", "for write operations") };
return scopes;
}
public SecurityScheme securityScheme() {
GrantType grantType = new ClientCredentialsGrant("http://localhost:8080/oauth/token");
SecurityScheme oauth = new OAuthBuilder().name("spring_oauth")
.grantTypes(Arrays.asList(grantType))
.scopes(Arrays.asList(scopes()))
.build();
return oauth;
}
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
答案 1 :(得分:1)
declare @today date = '2018-06-21'
select fin_year = dateadd(month, 3,
dateadd(year,
datepart(year,
dateadd(month, -3, @today)) - 1900, 0))
表达式datepart(year, dateadd(month, -3, @today))
用于获取当前财政年度。由于您的会计年度为4月1日,因此从1月1日至3月31日减去3个月即可得出正确的年份(会计年度=会计年度)。
在那之后,只是将日期与该年的日期设置为4月1日
答案 2 :(得分:0)
DECLARE @DateToUse DATETIME = GETDATE(),
@FinancialYearStart DATETIME
DECLARE @DayPart INT = DATEPART(DAY, @DateToUse),
@MonthPart INT = DATEPART(MONTH, @DateToUse),
@YearPart INT = DATEPART(YEAR, @DateToUse),
@StartMonth INT = 4, -- April
@StartDay INT = 1 -- 1st
SELECT DATETIMEFROMPARTS((
@YearPart - CASE
WHEN @MonthPart > @StartMonth
OR (
@MonthPart = @StartMonth
AND @DayPart >= @StartDay
)
THEN 0
ELSE 1
END
), @StartMonth, @StartDay, 0, 0, 0, 0)
我刚刚解决了这个问题,它现在产生了 2020-04-01 00:00:00.000
。我扔了一些其他日期,它似乎工作得很好。显然,可以通过更改顶部的变量轻松更改月/日。
它不是最短的SQL块,但它很容易用于不同的日期。我在不同问题中看到的许多其他答案都返回了不同的格式,例如字符串或年份部分。而这个日期时间将允许它用于日期时间比较。