我想通过使用C#或sql

时间:2018-12-20 14:15:42

标签: c# sql

我的日期列数据类型为“ nvarchar”。我的日期列值将类似于XXXX-XX-XX(YYYY-MM-DD)。 XX是2018-XX-01

之类的数字

我的表包含以下记录

ID DOB
-- ------------
 1  2018-01-01
 2  2018-04-01
 3  2018-XX-01

场景1 当我查询当时的日期2018-01-01时,我想在输出下方

2018-01-01
2018-XX-01

因为XX是任何数字。

场景2 当我查询当时的日期2018-XX-01时,我想在输出下方

2018-01-01
2018-XX-01
2018-04-01

因为XX是否

这里的XX将位于年,月,日的任意位置。

任何人都可以用SQL或C#提供解决方案。

2 个答案:

答案 0 :(得分:1)

嗯。我认为您可以使用like,但可以双向使用:

where @datestr like replace(dob, 'XX', '%') or
      dob like replace(@datestr, 'XX', '%')

答案 1 :(得分:0)

这是使用IEqualityComparer的解决方案

// or go straight to your average
var sum = data.GroupBy(e => new
{
    e.String1,
    e.Int1,
    e.Int2,
    e.Decimal1,
}).Average(e => e.Key.Decimal1);