我正在尝试从 AS400 数据库中选择具有当前日期(格式为 MMDDYY)的记录。
这就是我打算做的:
SELECT * FROM tableName WHERE $DATE='030411'
我尝试了这些组合,但没有成功:
SELECT * FROM tableName WHERE $DATE='SELECT REPLACE(CONVERT(VARCHAR(10), GETDATE(), 1), '/', '')'
有什么建议吗?
最佳答案
试试这个:
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 不允许您SELECT
值空气。
另请注意,当前日期
可能会以不同的格式返回日期,具体取决于 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 ********
关于SQL 当前日期 (AS400),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5199663/