gpt4 book ai didi

MySQL在函数中使用表列来创建用于排序的别名

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:40 24 4
gpt4 key购买 nike

听起来比实际更复杂。这是我在 SELECT 部分中尝试做的事情:

SELECT TIMESTAMPADD(
UCASE(
SUBSTRING(offset_unit,1,CHAR_LENGTH(offset_unit)-1)
),1,'2003-01-02') as offset_date

offset_unit 是数据库中的 VARCHAR 列。它包含以下内容之一:“小时”、“分钟”。

offset 是一个 INT。

在删除最后一个字符('s')之后,我正在尝试将 offset_unit 转换为大写,这样我就可以有一个适当的间隔(MINUTE,HOUR ...),这样我就可以得到一个我可以使用的日期在之后的排序中,但 MySQL 不断抛出错误。我通过一次添加一个函数来测试每个步骤,只有在我添加 TIMESTAMPADD 后它才会失败。如果我手动输入 MINUTE 则它会起作用。

有什么方法可以让它工作吗?

附加信息:我在 CakePHP 1.3 中运行它,在“字段”数组中的查找中,但这应该不重要。

最佳答案

这可以通过使用 CASE WHEN 子句轻松实现:

SELECT (CASE 
WHEN offset_unit = 'HOURS'
THEN TIMESTAMPADD(HOUR,`offset`,'2003-01-02')
WHEN offset_unit = 'MINUTES'
THEN TIMESTAMPADD(MINUTE,`offset`,'2003-01-02')
END) AS offset_date
FROM my_table;

SEE SQLFIDDLE DEMO HERE

关于MySQL在函数中使用表列来创建用于排序的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12090185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com