SQL 当前日期 (AS400)

标签 sql date ibm-midrange

我正在尝试从 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/

相关文章:

mysql - 一张表根据另一张表更新MySQL更新错误

c - 获取两个日期之间的天数差异?

java - 在 jtopen 中设置 AS400 的设备名称

sql - 如何找到调用存储过程/函数

Java (Netbeans) - 如何在 if 语句中编写 "access denied"代码,我尽了最大努力,但没有成功..?

SQL 查询 - 需要优雅的解决方案

mysql - 在 SQL 列中查找最常见的值

mysql - SQL 获取最大日期

python - 如何将时间(总是)四舍五入到最接近的十?

java - AS400 jt400 获取内存使用情况