繁体   English   中英

SQL当前日期(AS400)

[英]SQL Current date (AS400)

我正在尝试从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日期格式, current date可能会使日期以其他格式返回。 该代码期望它采用* 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  ******** 
insert( replace( char( current_date, usa ) , '/', '' ) , 5, 2, '')

上面的代码使用CHAR强制转换标量函数为当前日期生成* USA格式的字符串表示形式[即MM/DD/YYYY ],然后将MM/DD/YYYY字符串中的'/'字符替换为空字符串使用REPLACE标量函数成为MMDDYYYY ,然后插入从位置5开始的空字符串[即MMDDYYYYYYYY的第一位],同时删除该字符串的两个字节[即“插入”实际上是在替换第五和第六个字节,或根据第五个(5)的插入标量中的参数起两(2)个字节,并使用INSERT标量函数使用空字符串],从而产生字符串MMDDYY [其中最后两个字节YY为数字的10 ** 1和10 ** 0部分,以MM/DD/YYYY表示为YYYY

问候,查克

030411 =

选择子串(Replace(Replace(convert(varchar(10),GETDATE(),101),'/',''),'/',''),1,4)+ substring(convert(varchar(4) ,年(GETDATE()),101),3,2)

请尝试以下步骤。

  1. STRSQL

  2. 输入您的查询

  3. 按F4

  4. 将光标放在“ WHERE”的前面

  5. 按F4

  6. 在您的适当日期列名称前输入1

  7. 点击进入

  8. 如果您的栏位是数字赋值,而不是EG 1234而不是'1234'

  9. 点击进入

  10. 您应该获得结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM