如何於 SQL 中比較系統的 CURRENT DATE 與數字或文字性欄位?
SQL 的 CurDate 函數傳回一個 date 屬性的值,無法
直接拿來與數字或謂格式化的文字作比較,所以在比較
之前要先作型態轉換,有一個方法是使用 SQL/400
的 Year(),Month(),Day() 函數傳回數值,然後使用
數學運算式,產生數字性日期格式 YYYYMMDD,以下是
範例:
建立範例 Table TestDate:
Create Table TestDate (
PKCol Int Primary Key,
DecDate Decimal( 9,0 ),
CharDate Char( 8 ) )
輸入範例資料:
Insert Into TestDate Values ( 1, 20010711, '20010711' )
比較數字性欄位的SQL語法:
Select *
From TestDate
Where DecDate =
100 * ( 100 * Year( CurDate() ) + Month( CurDate() ) ) +
Day( CurDate() )
比較文字性欄位的SQL語法:
使用 CAST 函數將數字轉換為文字
Select *
From TestDate
Where CharDate = Cast(
100 * ( 100 * Year( CurDate() ) + Month( CurDate() ) ) +
Day( CurDate() ) As Char( 8 ) )
使用 CAST 函數時要注意 Month(),Day() 函數傳回
值若小於 10 時,CAST 函數轉換的結果會以 最後一
位為 空白,而非 0。
A blog about IBM i (AS/400), MQ and other things developers or Admins need to know.
星期二, 10月 31, 2023
2001-07-13 如何於 SQL 中比較系統的 CURRENT DATE 與數字或文字性欄位?
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言