2014-09-29 51 views
0

我使用JDBC來查詢查詢包含多次相同計算的位置。 例如:有沒有辦法在sql中只計算一次重複計算?

SELECT 
DATE(CONVERT_TZ(FROM_UNIXTIME(my_time + timezone_offset * 60), @@session.time_zone, '+00:00')), 
UNIX_TIMESTAMP(DATE(CONVERT_TZ(FROM_UNIXTIME(my_time + timezone_offset * 60), @@session.time_zone, '+00:00'))) 
FROM my_table; 

我可以以某種方式做沒有做計算幾次?

(它將使性能更好,也代碼看起來更清潔)

回答

0

你可以(在子查詢的FROM子句)使用派生表:

select mydate, UNIX_TIMESTAMP(mydate) 
from 
(
    SELECT 
    DATE(CONVERT_TZ(FROM_UNIXTIME(my_time + timezone_offset * 60), @@session.time_zone, '+00:00')) as mydate, 
    FROM my_table 
);