Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 40 additions & 3 deletions api/src/org/labkey/api/data/CompareType.java
Original file line number Diff line number Diff line change
Expand Up @@ -1624,6 +1624,9 @@ private abstract static class DateCompareClause extends CompareClause
private final String _filterTextDate;
private final String _filterTextOperator;

// See Issue 51472
protected final String SS_CAST = "CAST(? AS DateTime)";

DateCompareClause(FieldKey fieldKey, CompareType t, String op, Object rawFilterValue, Calendar param0)
{
super(fieldKey, t, param0.getTime());
Expand All @@ -1650,7 +1653,15 @@ private abstract static class DateCompareClause extends CompareClause
@Override
String toWhereClause(SqlDialect dialect, String alias)
{
return super.toWhereClause(dialect, alias);
return dialect.isSqlServer() ?
dialect.getColumnSelectName(alias) + getSqlServerComparison() :
super.toWhereClause(dialect, alias);
}

// See Issue 51472
protected String getSqlServerComparison()
{
throw new IllegalStateException("Must override either toWhereClause() or getSqlServerComparison()");
}

@Override
Expand Down Expand Up @@ -1687,7 +1698,8 @@ static class DateEqCompareClause extends DateCompareClause
String toWhereClause(SqlDialect dialect, String alias)
{
String selectName = dialect.getColumnSelectName(alias);
return selectName + " >= ? AND " + selectName + " < ?";
String q = dialect.isSqlServer() ? SS_CAST : "?";
return selectName + " >= " + q + " AND " + selectName + " < " + q;
}

@Override
Expand Down Expand Up @@ -1727,7 +1739,8 @@ static class DateNeqCompareClause extends DateCompareClause
String toWhereClause(SqlDialect dialect, String alias)
{
String selectName = dialect.getColumnSelectName(alias);
return selectName + " < ? OR " + selectName + " >= ?";
String q = dialect.isSqlServer() ? SS_CAST : "?";
return selectName + " < " + q + " OR " + selectName + " >= " + q;
}

@Override
Expand Down Expand Up @@ -1763,6 +1776,12 @@ static class DateGtCompareClause extends DateCompareClause
super(fieldKey, DATE_GT, " > ", rawFilterValue, addOneDay(startValue));
}

@Override
protected String getSqlServerComparison()
{
return " > " + SS_CAST;
}

@Override
protected boolean meetsCriteria(ColumnRenderProperties col, Object value)
{
Expand All @@ -1787,6 +1806,12 @@ static class DateGteCompareClause extends DateCompareClause
super(fieldKey, DATE_GTE, " >= ", rawFilterValue, startValue);
}

@Override
protected String getSqlServerComparison()
{
return " >= " + SS_CAST;
}

@Override
protected boolean meetsCriteria(ColumnRenderProperties col, Object value)
{
Expand All @@ -1811,6 +1836,12 @@ static class DateLtCompareClause extends DateCompareClause
super(fieldKey, DATE_LT, " < ", rawFilterValue, startValue);
}

@Override
protected String getSqlServerComparison()
{
return " < " + SS_CAST;
}

@Override
protected boolean meetsCriteria(ColumnRenderProperties col, Object value)
{
Expand All @@ -1835,6 +1866,12 @@ static class DateLteCompareClause extends DateCompareClause
super(fieldKey, DATE_LTE, " <= ", rawFilterValue, addOneDay(startValue));
}

@Override
protected String getSqlServerComparison()
{
return " <= " + SS_CAST;
}

@Override
protected boolean meetsCriteria(ColumnRenderProperties col, Object value)
{
Expand Down
2 changes: 1 addition & 1 deletion api/src/org/labkey/api/security/UserManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,7 @@ private static TableSelector getRecentLoginOrOuts(LoggedInOrOut inOrOut, @Nullab
SimpleFilter f = new SimpleFilter(FieldKey.fromParts("Comment"), "logged " + inOrOut.toString(), CompareType.CONTAINS);
if (since != null)
{
f.addCondition(FieldKey.fromParts("Created"), since, CompareType.GTE);
f.addCondition(FieldKey.fromParts("Created"), since, CompareType.DATE_GTE);
}
if (null == userAuditTable)
userAuditTable = getUserAuditSchemaTableInfo();
Expand Down