SQL 当前日期 (AS400)
我正在尝试从 AS400 数据库中选择具有当前日期(格式为 MMDDYY)的记录。
这就是我打算做的:
SELECT * FROM tableName WHERE $DATE='030411'
我尝试了这些组合,但没有运气:
SELECT * FROM tableName WHERE $DATE='SELECT REPLACE(CONVERT(VARCHAR(10), GETDATE(), 1), '/', '')'
有什么建议吗?
I am trying to select the records from an AS400 database that have a current date (in format MMDDYY).
This is what I am planning to do:
SELECT * FROM tableName WHERE $DATE='030411'
I tried combinations of this but with no luck:
SELECT * FROM tableName WHERE $DATE='SELECT REPLACE(CONVERT(VARCHAR(10), GETDATE(), 1), '/', '')'
Any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
试试这个:
您可以看到这个表达式返回什么值,如下所示:
您必须使用 sysibm.sysdummy1 ,因为 AS/400(iSeries、System i 等)上的 SQL 不允许您这样做
SELECT
凭空产生值。另请注意,
当前日期
可能会以不同的格式返回日期,具体取决于 SQL 日期格式。此代码预计采用 *ISO 格式 (YYYY-MM-DD
)。以下是我用来验证此例程的一些 SQL 语句。
这是我得到的回复:
Try this:
You can see what value this expression brings back like this:
You have to use
sysibm.sysdummy1
since SQL on an AS/400 (iSeries, System i, etc.) doesn't let youSELECT
values out of thin air.Also note that
current date
might bring the date back in a different format, depending on the SQL date format. This code is expecting it to be in *ISO format (YYYY-MM-DD
).Here are some SQL statements that I used to validate this routine.
Here's what I got back:
上面使用
CHAR
转换标量函数生成当前日期的 *USA 格式的字符串表示形式 [即MM/DD/YYYY
],然后替换 '/使用REPLACE
标量函数将字符串MM/DD/YYYY
中带有空字符串的 ' 字符变为MMDDYYYY
,然后插入空字符串从位置五开始[即MMDDYYYY
中YYYY
的第一个数字],同时删除该字符串的两个字节[即“插入”实际上替换了第五和第六个字节,或根据插入标量上的参数,使用INSERT
标量函数从第五 (5) 开始插入两 (2) 个字节,并带有空字符串],从而生成所需的字符串结果MMDDYY
[其中最后两个字节YY
是MM/ 中表示为
]。YYYY
的数字的 10**1 和 10**0 部分DD/YYYY问候,查克
The above generates the character string representation of the *USA format [i.e.
MM/DD/YYYY
] for the Current Date using theCHAR
cast scalar function, then replaces the '/' character in the stringMM/DD/YYYY
with the null string to becomeMMDDYYYY
using theREPLACE
scalar function, and then inserts the null string starting as position five [i.e. the first digit ofYYYY
inMMDDYYYY
] while removing two bytes of that string [i.e. the "insert" is actually replacing the fifth and sixth bytes, or per the arguments on the insert scalar from the fifth (5) for two (2) bytes, with the null string] using theINSERT
scalar function, thus producing the desired result of the stringMMDDYY
[where the last two bytesYY
are the 10**1 and 10**0 portions of the number denoted asYYYY
inMM/DD/YYYY
].Regards, Chuck
030411 =
030411 =
尝试以下步骤..
STRSQL
键入您的查询
按 F4
将光标放在“WHERE”前面"
按 F4
将 1 放在适当的日期列名称前面
按 ENTER
如果您的列是数字,请给出不带引号的值 EG 1234 而不是“1234”
按回车键
您应该得到您的结果
Try the below steps..
STRSQL
TYPE YOUR QUERY
PRESS F4
PUT YOUR CURSOR IN FRONT OF "WHERE"
PRESS F4
PUT 1 IN FRONT OF YOUR APPROPRIATE DATE COLUMN NAME
HIT ENTER
IF YOUR COLUMN IS NUMERIC GIVE VALUE WITHOUT QUOTES E.G 1234 AND NOT '1234'
HIT ENTER
YOU SHOULD GET YOUR RESULT