Mysql 使用带有RIGHT/CHARINDEX函数的DATEFROMPARTS

Mysql 使用带有RIGHT/CHARINDEX函数的DATEFROMPARTS,mysql,sql,tsql,Mysql,Sql,Tsql,好的,我正在编写一些提供给我的脚本,脚本的一部分是从两个不同的列构造一个日期,其中一个列可能包含这样的数据3 | 15,然后将构造的日期与今天的日期进行比较 原始查询部分: CASE WHEN rs.RecurrencePattern = 'Monthly' AND DAYDIFF((CreateDate(GetYear(rs.ws_wg_mig_start_date),GetMonth(rs.ws_wg_mig_start_date), toint(StrParts(rs.Recurrenc

好的,我正在编写一些提供给我的脚本,脚本的一部分是从两个不同的列构造一个日期,其中一个列可能包含这样的数据
3 | 15
,然后将构造的日期与今天的日期进行比较

原始查询部分:

CASE WHEN rs.RecurrencePattern = 'Monthly'  AND DAYDIFF((CreateDate(GetYear(rs.ws_wg_mig_start_date),GetMonth(rs.ws_wg_mig_start_date), toint(StrParts(rs.RecurrencePatternParms, '|',1)))),(now())) < 0 THEN GetMonth(rs.ws_wg_mig_start_date)+1

就我而言,
'3 | 15'
不是一个日期。需要更多的解释。样本数据和期望的结果会有所帮助。这就是我在这里转换它的原因:
Convert(int,右)(重复模式参数,
如果
存在,那么我需要抓取该参数右侧的字符。如果不存在,那么我只需要该列中的任何内容。因此,如果ws_wg_mig_开始日期字段中的值为
2019-07-01 00:00:00.000
,并且重复模式参数字段中的值为
1 | 15
,则结束结果是2019-07-15。如果
1
是递归模式参数中的值,那么2019-07-01
'3 | 15'
就我而言不是一个日期。需要更多的解释。示例数据和期望的结果会有所帮助。对。这就是我在这里转换它的原因:
Convert(int,Right)(重复模式参数,
如果
存在,那么我需要抓取该参数右侧的字符。如果不存在,那么我只需要该列中的任何内容。因此,如果ws_wg_mig_开始日期字段中的值为
2019-07-01 00:00:00.000
,并且重复模式参数字段中的值为
1 | 15
,则结束结果为2019-07-15。如果
1
是重现模式参数中的值,则为2019-07-01
DATEFROMPARTS(datepart(year,rs.ws_wg_mig_start_date),datepart(month,rs.ws_wg_mig_start_date),Convert(int,Right(recurrence_pattern_params, NULLIF(CHARINDEX('|', reverse(recurrence_pattern_params)),0)-1)))