针对使用最大日期并捕获唯一类型的SQL和sql获取最大日期这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展android-使日期选择器包含在最大日期中、c#–捕获唯一键冲突的通用方法、jav
针对使用最大日期并捕获唯一类型的SQL和sql获取最大日期这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展android-使日期选择器包含在最大日期中、c# – 捕获唯一键冲突的通用方法、java – 番石榴是否有一种将迭代转换为唯一类型的映射的方法?、mongodb 日期排序,取表里面最大日期等相关知识,希望可以帮助到你。
本文目录一览:- 使用最大日期并捕获唯一类型的SQL(sql获取最大日期)
- android-使日期选择器包含在最大日期中
- c# – 捕获唯一键冲突的通用方法
- java – 番石榴是否有一种将迭代转换为唯一类型的映射的方法?
- mongodb 日期排序,取表里面最大日期
使用最大日期并捕获唯一类型的SQL(sql获取最大日期)
您可以在case
中重复group by
表达式。或者,按照我的意愿,使用apply
:
SELECT pc.packnum,pc.CatID,MAX(b.firstreleasemailed) as Maildate
v.Type
FROM pic704current pc JOIN
CatCov cc
ON pc.CatID = cc.Offer AND
pc.Year = cc.MailYear CROSS APPY
(VALUES (Case when cc.description like '%Promo%' then 'Promo'
when cc.description like '%Sale%' then 'Insert Sale'
when cc.Description like '%ins%' and cc.Description not like '%sale%' then 'Insert Core'
when cc.description like '%ons%' then 'Onsert'
Else 'Core'
end)
) v(type)
WHERE pc.DiscountReasonCode Not in ('LT','UP','OR','ER','IP','WT') AND
cc.firstreleasemailed <= getdate()
pc.PackNum = '6762846'
GROUP BY pc.packnum,v.type;
请注意,我还将表别名更改为表名的缩写,因此在读取查询时它们是有意义的。使用有意义的表别名是最佳做法。
编辑:
如果只希望每种类型都使用此选项,则从select
和group by
中删除其他列:
SELECT MAX(b.firstreleasemailed) as Maildate
v.Type
FROM pic704current pc JOIN
CatCov cc
ON pc.CatID = cc.Offer AND
pc.Year = cc.MailYear CROSS APPY
(VALUES (Case when cc.description like '%Promo%' then 'Promo'
when cc.description like '%Sale%' then 'Insert Sale'
when cc.Description like '%ins%' and cc.Description not like '%sale%' then 'Insert Core'
when cc.description like '%ons%' then 'Onsert'
Else 'Core'
end)
) v(type)
WHERE pc.DiscountReasonCode Not in ('LT','WT') AND
cc.firstreleasemailed <= getdate()
pc.PackNum = '6762846'
GROUP BY v.type;
android-使日期选择器包含在最大日期中
我正在尝试使用Android日期选择器通过两个输入来选择日期范围.开始日期以结束日期为其最大日期,结束日期以开始日期为最小日期.
我想允许将日期选择器设置为相同的日期,以允许选择一天作为范围(因为范围包括在内).
但是,似乎最小日期是包含在内的,而最大日期总是是排除的?有什么办法可以使最大日期包含在内?现在,日期选择器将结束日期设置为可以选择的样式,但不是(我真的很讨厌,因为这使人感到困惑).最终看起来像这样(允许2月28日为最大可选日期-请注意3月1日看起来是可选的,但不是):
我在代码中没有做任何特别的事情.只需创建一个DatePickerDialog,然后调用dialog.getDatePicker().setMaxDate(maxDateInMs).
解决方法:
我意识到minday和maxday都包含在内
final Calendar myCalendar = Calendar.getInstance();
DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
}
};
DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, date, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH));
datePickerDialog.getDatePicker().setMinDate(myCalendar.getTimeInMillis());
datePickerDialog.getDatePicker().setMaxDate(myCalendar.getTimeInMillis()+ DateUtils.DAY_IN_MILLIS);
datePickerDialog.show();
c# – 捕获唯一键冲突的通用方法
try { [...] DbCommand insertCommand = [...] insertCommand.ExecuteScalar(); [...] } catch (System.Exception exception) { [...] throw; }
如果我将显式捕获System.Data.sqlClient.sqlException,我可以像下面一样评估ErrorNumber.
try { //insertion code } catch(sqlException ex) { if(ex.Number == 2627) { //Violation of primary key. Handle Exception } }
sqlException上下文中的ErrorNumber 2627意味着违反唯一键.见https://msdn.microsoft.com/en-us/library/ms151757%28v=sql.110%29.aspx
到现在为止还挺好.因为我正在使用DbCommand,因此使用不同类型的关系数据库管理系统,我正在寻找一种更通用的方式来捕获这种违反唯一键约束的行为.
感谢帮助.
解决方法
public static int ExecuteWithNiceExceptions(this IDbCommand cmd) { try { return cmd.ExecuteNonQuery(); } catch(sqlException ex) { if (ex.Number == 2627) { throw new PrimarykeyviolationException(cmd,ex); } else { throw; } } catch (OleDbException ex) { ... } ... }
这样,您可以将不同的,特定于实现的异常“转换”为通用的,有意义的异常.
java – 番石榴是否有一种将迭代转换为唯一类型的映射的方法?
public static <T,K,V> Map<K,V> collectionSplitter(Collection<T> source,Function<T,K> kProducer,V> vProducer){ Map<K,V> map = Maps.newHashMap(); for(T t : source){ map.put(kProducer.apply(t),vProducer.apply(t)); } return map; }
有没有现有的方法呢?最接近的是Splitter.keyvalueSplitter(),如果T是一个String.
解决方法
Maps.uniqueIndex
– 这是关键方面,但不是价值方面…足够近了吗?
你可以使用:
Map<K,V> map = Maps.transformValues(Maps.uniqueIndex(source,kProducer),vProducer);
稍微尴尬,但它会完成工作,我想…
mongodb 日期排序,取表里面最大日期
tradingDay是实体类字段
Query query = new Query();
query.with(new Sort(Sort.Direction.DESC, "tradingDay"));
List<StockQuotation> stockQuotationList = mongoTemplate.find(query,StockQuotation.class);
System.out.println("----====----" + stockQuotationList.get(0).getTradingDay());
今天关于使用最大日期并捕获唯一类型的SQL和sql获取最大日期的讲解已经结束,谢谢您的阅读,如果想了解更多关于android-使日期选择器包含在最大日期中、c# – 捕获唯一键冲突的通用方法、java – 番石榴是否有一种将迭代转换为唯一类型的映射的方法?、mongodb 日期排序,取表里面最大日期的相关知识,请在本站搜索。
本文标签: