星期二, 10月 31, 2023

2001-07-13 如何於 SQL 中比較系統的 CURRENT DATE 與數字或文字性欄位?


如何於 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。


沒有留言: