我正在为ASP.NET应用程序编写一些SQL语句。其中一项要求是仅在开放时段显示信息。在前一期间关闭时,供应商软件会自动更新期间。所以我发现自己做了一堆子选择,如:
where date >= (SELECT DATE(CONCAT('20', CONCAT(YY, CONCAT('-', CONCAT( MM, (CONCAT('-', DD))))))) FROM LIB/FILE')
是的,日期的每个部分都在不同的字段中。
使此查询成为一个函数会使查询更有效吗?在我怎么做之前,我从未创建过一个函数?我的想法是这样的:
IsInRange(date)
所以我可以做WHERE IsInRange(date)
。
或者有更好的方法吗?
答案 0 :(得分:1)
CREATE FUNCTION toDate(yy CHAR(2), mm CHAR(2), dd CHAR(2))
RETURNS DATE
RETURN DATE('20' || '-' || yy || '-' || mm || '-' || dd)
SELECT *
FROM table
WHERE date <= toDate(yy, mm, dd)
答案 1 :(得分:0)
是的,但该功能的重点是代码重用。如果你在其他地方这样做,或者预期那就去做吧。
答案 2 :(得分:0)
现在我创建了一个视图,将字段加入到一个日期中,这至少可以清理查询。