Sybase IQ 16 周开始日 - 仅适用于 from 语句?

问题描述 投票:0回答:1

默认情况下,Sybase IQ 中的周从星期日开始。可以通过以下方式更改此设置:

--set start of week to be on Monday
SET OPTION date_first_day_of_week =1;

当我尝试检查此选项是否已设置时,我会:

SELECT DOW( '2015/01/05')
-- 2

这应该返回 1。

所以我尝试这个:

SELECT DOW( '2015/01/05')
FROM stringer_bell.vials
WHERE ID = 111111111111111111;

-- 1

这给出了正确的答案,看来这个日期函数需要一个 from 语句才能返回正确的值。在选择中单独使用日历函数对于存储过程可能很有用。

为什么会出现这种情况?

--编辑1

有人指出该选项是

first_day_of_week
而不是 Sybase IQ 12 选项名称
date_first_day_of_week
。但是,当使用正确的选项 na 时,我仍然会出现这种行为。我用 SQL Workbench/J 测试了这个

sql date sybase
1个回答
0
投票
在 Sybase IQ(可能是所有版本,当然是从 15 开始)中,至少有两个底层数据存储引擎/架构*(可能措辞不正确):

    IQ = 核心列式数据存储
  1. SQl Anywhere = 其他 SAP 架构(大多数(如果不是全部)系统表都存储在这里)
因此,如果您在没有 from 子句(或从 sys 表!)的情况下运行,您最终会进入 SQL Anywhere,并且可能会或可能不会获得与 Sybase IQ 相同的结果;

*注意:根据您的评分方式,还可以使用其他引擎/模式,例如行级版本控制(RLV 又名 TLV(事务)),它可以让您避免表级锁定并获得更接近 OLTP 的功能,也许还有其他引擎/模式。

请注意

SAP IQ 的官方文档,这样您就可以避免登陆 SQL Anywhere 结果(Google 似乎总是向我发送该结果)。 还了解 WATCOM 与 TSQL 之间的差异(不同的 IF/THEN 语法)

© www.soinside.com 2019 - 2024. All rights reserved.