首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Informix SQL语法- AS子句

Informix SQL语法- AS子句
EN

Stack Overflow用户
提问于 2017-06-15 19:01:06
回答 2查看 1K关注 0票数 0

我是一个全新的Informix新手,在语法方面有一些问题。

下面是我对MySQL数据库使用的查询:

代码语言:javascript
复制
select acceptable as "NUM",
       (callsoffered-outflowcalls-dequecalls-abncalls1-abncalls2-abncalls3-abncalls4) as "DEN"
from cms_hsplit 
WHERE 
row_date >= (current_date() - interval 9 day)

informix DB中的表名和列名是相同的。上述查询在Informix中失败。

"AS“部分的正确语法是什么?

返回当前日期减9的语法是什么?

EN

回答 2

Stack Overflow用户

发布于 2017-06-15 19:50:20

代码语言:javascript
复制
SELECT acceptable AS num,
       callsoffered-outflowcalls-dequecalls-abncalls1-abncalls2-abncalls3-abncalls4 AS den
FROM cms_hsplit
WHERE row_date >= TODAY - 9
票数 2
EN

Stack Overflow用户

发布于 2017-06-16 02:51:16

双引号与单引号

默认情况下,Informix将单引号和双引号视为“字符串”(在SQL-86标准成为标准之前的遗留行为)。在标准SQL中,单引号用于字符串,而双引号将“分隔标识符”括起来。从技术上讲,AS后面的不是一个字符串,而是一个标识符。因此,Informix在缺省情况下不允许使用双引号表示法(除了SQL解析器之外,这一限制可能会被取消,而不会造成最小的混乱)。

有(至少)两种方法可以解决这个问题:

  1. 通常是最好的:不要在名称两边使用引号。
  2. 设置了环境变量DELIMIDENT,以便双引号“string”被视为分隔标识符,而不是字符串。它设置的值并不重要(即使是一个空字符串也足够了),但我建议使用export DELIMIDENT=1export DELIMIDENT=true。请注意,export DELIMIDENT=0export DELIMIDENT=false与其他两个具有相同的含义。

设置环境变量意味着您必须在任何地方都要小心。如果别名中需要空格或其他特殊字符,则必须使用DELIMIDENT和双引号。

Informix更随意地使用“用户名”前后的引号,而不是表名等等。

日期算法

您可以通过多种方式指定“当前日期减九天”。两个主要问题是:

代码语言:javascript
复制
WHERE row_date = TODAY - 9
WHERE row_date = CURRENT YEAR TO DAY - 9 UNITS DAY

Informix DATE类型是自引用日期(1899-12-31是第0天,因此第1天是1900-01-01)以来的天数的计数。因此,您可以从日期值中添加或减去整数,以获得日期值之后或之前的天数。

Informix DATETIME类型家族更为复杂,但具有很强的可扩展性。操作往往是冗长的-见证CURRENT YEAR TO DAY9 UNITS DAY。另一方面,如果满足您的需要(或者更合理地说,是DATETIME YEAR TO MINUTE),您可以有一个DATETIME MONTH TO MINUTE值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44565814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档