带有“ORDER BY”动态计算的存储过程

时间:2013-07-03 10:14:38

标签: sql stored-procedures

我写了一个商店程序,我想在最后一个“ORDER BY DateTime DESC”中进行计算。声明。从某种意义上说,在“ORDER BY”的查询中,我希望能够将DB中列的分钟添加到DateTime

所以这个想法就像“ORDER BY variable =(DateTime + 15 *'offsettime”)DESC;“。我希望有一个解决方法,有人可以帮助我,因为我不是一个数据库专家。提前谢谢

2 个答案:

答案 0 :(得分:0)

SELECT 
 YOUR COLUMNS, (DateTime + 15 * 'offsettime') calculation
FROM YOUR_TABLE order by 2

更新

由于您的要求是从datetime中提取分钟并进行算术运算,因此Oracle中有一个EXTRACT函数可以帮助您

     SELECT 
     YOUR COLUMNS, (EXTRACT(MINUTE FROM DateTime) + 15 * 'offsettime') 
     calculation FROM YOUR_TABLE order by 2

注意:假设您的数据库是Oracle,因为您没有谈论它。

答案 1 :(得分:0)

大多数SQL版本都支持该标准,您可以在select子句中的order by语句中包含列别名。所以,如果你有:

select t.*, (DateTime + 15 * offsettime) as variable
from t
order by variable desc;

此外,几乎所有版本的SQL都允许您在order by子句中进行计算:

select t.*
from t
order by (DateTime + 15 * offsettime)

最后,我不确定'offsettime"的意思。列名称周围不需要任何引号。如果包含它们,它们应该是双引号而不是单引号。单引号表示字符串常量。