SQL当前日期(AS400)
我试图从AS400数据库中选择具有当前日期(格式为MMDDYY)的记录 这就是我计划做的:SQL当前日期(AS400),sql,date,ibm-midrange,Sql,Date,Ibm Midrange,我试图从AS400数据库中选择具有当前日期(格式为MMDDYY)的记录 这就是我计划做的: SELECT * FROM tableName WHERE $DATE='030411' 我尝试了这些组合,但没有成功: SELECT * FROM tableName WHERE $DATE='SELECT REPLACE(CONVERT(VARCHAR(10), GETDATE(), 1), '/', '')' 有什么建议吗?030411= 挑选 子字符串(Replace)(Replace)(co
SELECT * FROM tableName WHERE $DATE='030411'
我尝试了这些组合,但没有成功:
SELECT * FROM tableName WHERE $DATE='SELECT REPLACE(CONVERT(VARCHAR(10), GETDATE(), 1), '/', '')'
有什么建议吗?030411= 挑选 子字符串(Replace)(Replace)(convert)(varchar(10),GETDATE(), 101), '/', ''), '/', ''),1,4)+ 子字符串(convert(varchar(4),year(GETDATE()),101),3,2) 试试这个:
SELECT * FROM tableName WHERE $DATE=
substring(cast(current date as char(10)),6,2) ||
substring(cast(current date as char(10)),9,2) ||
substring(cast(current date as char(10)),3,2)
您可以看到此表达式返回的值如下所示:
select substring(cast(current date as char(10)),6,2) ||
substring(cast(current date as char(10)),9,2) ||
substring(cast(current date as char(10)),3,2)
from sysibm.sysdummy1
您必须使用sysibm.sysdummy1
,因为AS/400(iSeries、System i等)上的SQL不允许您凭空选择值
还请注意,当前日期
可能会以不同的格式返回日期,具体取决于SQL日期格式。此代码应为*ISO格式(YYYY-MM-DD
)
下面是我用来验证这个例程的一些SQL语句
create table dmclib.test2 ( $DATE decimal(6,0) ) ;
insert into dmclib.test2 values
(010111), (010211), (031011) ;
SELECT * FROM dmclib.test2
where $DATE =
substring(cast(current date as char(10)),6,2) ||
substring(cast(current date as char(10)),9,2) ||
substring(cast(current date as char(10)),3,2) ;
这是我得到的:
....+...
$DATE
31,011
******** End of data ********
上面使用CHAR
cast标量函数为当前日期生成*USA格式的字符串表示形式[即MM/DD/YYYY
],然后使用REPLACE
标量函数将字符串MM/DD/YYYY
中的“/”字符替换为空字符串,变为mmddyyyyy
,然后插入从位置5开始的空字符串[即MMDDYYYY
中YYYY
的第一位数字],同时删除该字符串的两个字节[即“insert”实际上是用空字符串替换第五个字节和第六个字节,或根据插入标量上的参数从第五(5)个字节替换两(2)个字节]使用INSERT
标量函数,从而生成字符串MMDDYY
[其中最后两个字节YY
是MM/DD/YYYY
中表示为YYYY
的数字的10**1和10**0部分]
尊敬的Chuck请尝试以下步骤
STRSQL
键入您的查询
按F4
将光标放在“WHERE”前面
按F4
在相应的日期列名称前加1
按回车键
如果您的列是数字,请给出不带引号的值,例如1234,而不是“1234”
按回车键
你应该得到你的结果
不,这也不行。我知道这个日期字段的格式是MMDDYY您是收到错误消息还是没有返回任何行?如果您编写从sysibm.sysdummy1选择当前日期
,会返回什么?顺便说一句,如果从sysibm.sysdummy1选择当前日期
不起作用,请将其作为从sysibm/sysdummy1选择当前日期
(以防SQL会话使用*SYS命名约定)进行尝试,只需将select查询复制并运行到SQL server中。它应该返回MMDDYY格式的值。这个问题是针对AS/400的,而不是SQL Server。当我在AS400上执行这个问题时,它会说“GETDATE in*LIBL type*N not found”。这个问题需要澄清。每个表中的每一行实际上都有一个“当前日期”。当前日期是一个始终可用的特殊寄存器;它不是从列中物理检索的值。需要定义“当前日期”。和日期列没有格式。“MMDDYY”格式将来自连接或演示客户端上的设置。更改设置以获得不同的格式。我们需要知道连接的详细信息。但是,如果列实际上是CHAR、VARCHAR、DECIMAL或其他数据类型,而不是日期,那么我们也需要知道这一点。
insert( replace( char( current_date, usa ) , '/', '' ) , 5, 2, '')