我已经尝试了一段时间来获得GETDATE()DB2 for i中的类似方法.到目前为止,我发现了以下内容:
current date
current timestamp
current time
Run Code Online (Sandbox Code Playgroud)
我有可能:
select specific, columns
from table
where datefield = current date - 1 day
Run Code Online (Sandbox Code Playgroud)
这是最有效的方式还是有一些方法我可能还没有找到?
编辑:
我目前有这个:
WHERE datefield = - days(date('2013-10-28'))
Run Code Online (Sandbox Code Playgroud)
虽然这没有用,因为我需要每天编辑它以运行查询.
现在来到这个:
WHERE datefield = VARCHAR_FORMAT(CURRENT TIMESTAMP, 'YYYYMMDD') - 1
Run Code Online (Sandbox Code Playgroud)
除非这个在一月的第一天不起作用,因为1 - 1 = 0并且一个月内没有第0天......
作为标题,所有开放的思想都受到欢迎
我在我的电脑上测试过,输出似乎是一样的.
例如.
USE BOB_DATABASE
SELECT ID, Name, First_Name, Last_Name FROM DBO.T_User
FOR XML AUTO
USE BOB_DATABASE
SELECT ID, Name, First_Name, Last_Name FROM DBO.T_User
FOR XML RAW
USE BOB_DATABASE
SELECT ID, Name, First_Name, Last_Name FROM DBO.T_User
FOR XML RAW, ELEMENTS
USE BOB_DATABASE
SELECT ID, Name, First_Name, Last_Name FROM DBO.T_User
FOR XML PATH('CUSTOMERS')
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Rails 中实现私人消息传递系统,并且需要数据库设计方面的帮助。我已经阅读了周围的内容,并提出了许多有效的替代方案,但我想知道是否有人知道这样一个最终可扩展的模式。我感谢任何帮助或链接。
编辑:数据库模式基本上有两件事
1.主题
2.留言
我正在考虑实施两个表
主题文本
发件人ID
接收者id
有很多文本
内容文本
我对数据库模式一点也不擅长,但我很感谢我在学习时的帮助
我在IFS中有很多文件,有各种各样的CCSID(0,37,819,1200,1252等),我的任务是编写一个简单的RPGLE [1]程序,允许用户查看任何这些文件的内容.
我们的系统(V6R1)CCSID(DSPSYSVAL QCCSID)是65535 [2],我们的作业默认CCSID为37,这意味着当我尝试显示CCSID 819(ASCII)时,我看到垃圾 - 符号,随机颜色等.
我熟悉通过QtqIconvOpen API 将数据从一个CCSID转换到另一个CCSID,所以如果我知道文件的CCSID与我们的默认CCSID不同,我可以转换它.我在几年前编写代码来做到这一点并且工作正常.
我的问题是以编程方式查找IFS文件的CCSID.在谷歌搜索之后,我发现的唯一相关信息来自JamesA的Stackoverflow(如何确定CPYFRMIMPF命令中使用的CCSID?)谁指出你可以在QSHELL中执行"ls -S"以获得显示其CCSID的文件列表和文件名.
因此理论上我可以执行ls -S filename,解析输出以获取CCSID,然后在必要时使用该CCSID执行数据转换.这是一个丑陋的黑客,如果可能的话我更喜欢使用IBM API.
有谁知道这样的API或更优雅的黑客比解析列表ls -S filename?
[1]我使用C API open(),read()并close()实际读取数据.
[2]我知道65535是一个糟糕的选择,但我无能为力.
我有以下RPGLE程序:
dmypgm pr extpgm('MYPGM')
d myarr like(myarr)
d somevar like(somevar)
d myarr s 64a dim(100)
d somevar s 65a
/free
callp mypgm(myarr: somevar);
*inlr = *on;
/end-free
Run Code Online (Sandbox Code Playgroud)
当我尝试在V6R1盒子上编译它时,我收到错误消息:
RNF5343 30 1 Array has too many omitted indexes; specification is ignored.
Run Code Online (Sandbox Code Playgroud)
一些文档告诉我:
RNF5343
数组有太多省略的索引; 规范被忽略了.
三十
原因.....:在赋值运算符右侧用作操作数的数组的省略索引数大于指定为赋值结果的数组的省略索引数.
恢复...:减少操作数的省略索引数; 或者增加结果的省略索引数.再次编译.
这不是很有用,因为这是一个程序调用,而不是尝试分配一个值(比如EVAL语句或其他东西).
如果我将外部程序调用的声明更改为:
dmypgm pr extpgm('MYPGM')
d myarr 64a dim(100)
d somevar like(somevar)
Run Code Online (Sandbox Code Playgroud)
该程序将编译得很好.
那么如何将LIKE关键字与数组一起用于外部程序定义?
代码我正在尝试运行:
$query = "DESCRIBE TABLE TABLENAME";
$result = odbc_exec($h, $query);
Run Code Online (Sandbox Code Playgroud)
结果:
PHP警告:odbc_exec():SQL错误:[unixODBC] [IBM] [iSeries Access ODBC驱动程序] [DB2 UDB] SQL0104 - 令牌TABLENAME无效.有效令牌:INTO.,SQLExecDirect中的SQL状态37000 ...
在同一连接上,SELECT,INSERT,UPDATE或DELETE查询没有其他问题.这是语法错误吗?
所以在我的游戏服务器上,我们有服务器端命令。我想知道是否可以转动这个
public string Command
{
get { return "g"; }
}
Run Code Online (Sandbox Code Playgroud)
变成这样
public string Command
{
get { return "g", "guild", "group"; }
}
Run Code Online (Sandbox Code Playgroud)
这是命令接口代码
internal interface ICommand
{
string Command { get; }
int RequiredRank { get; }
void Execute(Player player, string[] args);
}
Run Code Online (Sandbox Code Playgroud)
这是命令处理程序的代码
第 1 部分:
ProcessCmd(x[0].Trim('/'), x.Skip(1).ToArray());
Run Code Online (Sandbox Code Playgroud)
第2部分:
private void ProcessCmd(string cmd, string[] args)
{
if (cmds == null)
{
cmds = new Dictionary<string, ICommand>();
var t = typeof (ICommand);
foreach (var i in t.Assembly.GetTypes())
if …Run Code Online (Sandbox Code Playgroud) ---这里我们找到了我们想要在其他文件中清除的客户编号.首先,我们正在阅读客户主数据,然后在订单历史记录或发票历史记录中查看客户编号是否存在.如果不是,那么我们希望从Customer master以及其他2个文件中清除此客户.
但是在第二个文件中,如果客户编号在营销列中有"A"或"C",而且是在2007年之后,我们不希望从任何文件中清除这个.
所以我创建了代码,在将客户记录写入保存/保留文件并删除之前,它返回一个标志,是的,可以删除.
C IF PUGFIL = 'Y' AND
C ACENT# <> ACENT#_OLD
c EXSR CHKCUS_SR
c ACFLAG IFEQ 'N'
C WRITE TRCMASRR
c* delete arcmasrr
Run Code Online (Sandbox Code Playgroud)
c CHKCUS_SR BEGSR
c eval ACFLAG = ' '
C ORHKEY SETLL dRCST1
C ORHKEY READE dRCST1
* If the order entity is found, write the rec into VRCSTKBI file
C DOW NOT %EOF(dRCST1)
c if BICOTC <> 'A' AND BICOTC <> 'C'
C WRITE VRCSTKRR
c EVAL ACFLAG = 'N'
c endif …Run Code Online (Sandbox Code Playgroud) 这是功课.
目标:我想比较两个对象的日期来决定我的人物对象是否是成年人并将其存储在一个字符串中.
奇怪的是,我所有的日期值d1都是0;
public class Date {
public int day, month, year;
public String child
Date(date d1, date d2) {
if ((d1.year - d2.year > 18) ||
((d1.year - d2.year == 18) && (d2.year> d1.year)) ||
((d1.year - d2.year == 18) && (d2.year == d1.maand) && (d2.day > d1.day))) {
child = adult;
} else {
child = child;
}
Date(int a, int b, int c) {
a = year;
b = month;
c = day;
}
Date (String birthdate) …Run Code Online (Sandbox Code Playgroud) 这是DB2 for i在7.3版本上运行.
我目前正在评估我们需要做什么才能将DDS定义的物理和逻辑文件转换为DDL定义的表和视图.作为我测试的一部分,我遇到了一个不同寻常的发现.给定一个列定义为a的表TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,有时当从RPGLE程序写入新行时,该值会正确填充 - 但大多数情况下它不会.SQL INSERT似乎一直很好.
这是来源:
QDDLSRC/SOT
CREATE OR REPLACE TABLE SOT (
ID BIGINT GENERATED ALWAYS AS IDENTITY (START WITH 1),
DESC CHAR(20) NOT NULL DEFAULT '',
CTS TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
UTS TIMESTAMP NOT NULL FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP,
PRIMARY KEY(ID)
) RCDFMT SOTR;
Run Code Online (Sandbox Code Playgroud)
并编译它:
RUNSQLSTM SRCFILE(MYLIB/QDDLSRC) SRCMBR(SOT) DFTRDBCOL(MYLIB)
Run Code Online (Sandbox Code Playgroud)
这是一个普通的旧RPGLE程序的源代码WRITE:
QRPGLESRC/SOT1(普通旧RPGLE代码)
CTL-OPT Optimize(*full);
CTL-OPT Option(*nodebugio : *noshowcpy : *nounref : *srcstmt); …Run Code Online (Sandbox Code Playgroud)