SQL当前日期(AS400)

时间:2011-03-04 21:47:35

标签: sql date ibm-midrange

我正在尝试从AS400数据库中选择具有当前日期的记录(格式为MMDDYY)。

这就是我打算做的事情:

SELECT * FROM tableName WHERE $DATE='030411'

我尝试了这种组合,但没有运气:

SELECT * FROM tableName WHERE $DATE='SELECT REPLACE(CONVERT(VARCHAR(10), GETDATE(), 1), '/', '')'

有什么建议吗?

4 个答案:

答案 0 :(得分:3)

试试这个:

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上的SQL(iSeries,System i等)不会让您SELECT凭空捏造。

另请注意,current date可能会以不同的格式返回日期,具体取决于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  ******** 

答案 1 :(得分:2)

insert( replace( char( current_date, usa ) , '/', '' ) , 5, 2, '')

以上生成* USA格式的字符串表示[即对于使用MM/DD/YYYY强制转换标量函数的当前日期CHAR],然后使用{替换字符串MM/DD/YYYY中的'/'字符和空字符串变为MMDDYYYY {1}}标量函数,然后从位置5开始插入空字符串[即REPLACEYYYY的第一个数字,同时删除该字符串的两个字节[即“insert”实际上是使用MMDDYYYY标量函数替换第五个和第六个字节,或者根据插入标量从第五个(5)中的参数替换两(2)个字节,使用空字符串]产生字符串INSERT的所需结果[其中最后两个字节MMDDYYYY中表示为YYYY的数字的10 ** 1和10 ** 0部分}]。

问候,查克

答案 2 :(得分:0)

030411 =

  

选择   子(更换(替换(转换(VARCHAR(10),GETDATE(),   101),'/',''),'/',''),1,4)+   子(转换(VARCHAR(4),年(GETDATE()),101),3,2)

答案 3 :(得分:-1)

尝试以下步骤..

  1. STRSQL

  2. 输入您的查询

  3. PRESS F4

  4. 将你的游客放在“WHERE”前面

  5. PRESS F4

  6. 在你的适当日期栏名前面放1个

  7. HIT ENTER

  8. 如果你的专栏是数字的,没有报价E.G 1234而不是'1234'

  9. HIT ENTER

  10. 你应该得到你的结果