星期五, 9月 30, 2011

[SQL] 日期 - 基本應用

  • 日期資料型態的預設格式
  1. datetime:yyyy-mm-dd hh:mm:ss.mmm
  2. smalldate:yyyy-mm-dd hh:mm:ss
  3. date:yyyy-mm-dd
  • 基底日期
以 datetime 來表示為 1900-01-01 00:00:00.000 有兩種表示方式
SELECT CAST(0 AS datetime)
SELECT CAST('' AS datetime)
  • 搭配 REPLACE 應用
-- 利用 REPLACE 把 連接號(-)、空格和冒號(:)拿掉
SELECT
 REPLACE(
   REPLACE(
     REPLACE(CONVERT(varchar(20), GETDATE(), 120 ),'-','') -- 把連結號拿掉
   ,' ','') -- 把空格拿掉
 ,':','') -- 把冒號拿掉
  • 搭配 DATEADD、DATEDIFF 應用
第一天日期計算:
邏輯 1. 用 DATEDIFF 計算從基底日期至欲計算日期,總共有多個年(月、日、季或週)。
邏輯 2. 用 DATEADD + 步驟一的計算值,就可以找到年(月、季或週)的第一天日期 或 當天的午夜時間。
-- 當年第一天
SELECT 
 DATEADD(yy,
            DATEDIFF(yy,'',GETDATE()) -- 邏輯 1 計算值
        ,'')

-- 當月第一天
SELECT 
 DATEADD(mm,
            DATEDIFF(mm,'',GETDATE()) -- 邏輯 1 計算值
        ,'') 

-- 當季第一天
SELECT 
 DATEADD(qq,
            DATEDIFF(qq,'',GETDATE()) -- 邏輯 1 計算值
        ,'')

-- 當週星期一日期
SELECT 
 DATEADD(wk,
            DATEDIFF(wk,'',GETDATE()) -- 邏輯 1 計算值
        ,'')
最後一天日期計算
邏輯 1. 同 第一天日期計算邏輯,先算出第一天日期
邏輯 2. 第一天日期 減 一天,即為最後一天日期
-- 上月最後一天
SELECT 
 DATEADD(dd,-1,                                         -- 減 1 天
               DATEADD(mm,DATEDIFF(mm,'',GETDATE()),'') -- 當月第一天日期
        )

-- 去年最後一天
SELECT 
 DATEADD(dd,-1,                                         -- 減 1 天
               DATEADD(yy,DATEDIFF(yy,'',GETDATE()),'') -- 當年第一天日期
        )

-- 本月最後一天
SELECT 
 DATEADD(dd,-1,                                             -- 減 1 天
               DATEADD(mm,DATEDIFF(mm,'',GETDATE()) + 1,'') -- 計算值 加 1 個月,找出下個月第一天
        )

-- 本年最後一天
SELECT 
 DATEADD(dd,-1,                                             -- 減 1 天
               DATEADD(yy,DATEDIFF(yy,'',GETDATE()) + 1,'') -- 計算值 加 1 年,找出明年第一天
 )
  • 當天午夜時間
-- 方法一:搭配 DATEADD、DATEDIFF 應用
SELECT
 DATEADD
    (dd,
        DATEDIFF(dd,'',GETDATE())
    ,'')

-- 方法二:利用轉換資料形態
SELECT 
 CAST
    (
      CONVERT(char(10),GETDATE(),120) -- 把 GETDATE() 轉為字串,因限定字元因素,只會產生 yyyy-mm-dd
      AS Datetime
    ) -- 再把 yyyy-mm-dd 轉為 datetime 變成午夜時間
  • 每個月的最後一天
-- 方法一:搭配 DATEADD、DATEDIFF 應用
SELECT 
 DATEADD(dd,-1,                                             
               DATEADD(mm,DATEDIFF(mm,'',GETDATE()) + 1,'') 
        )

-- 方法二:利用 2012 提供的新函數 EOMONTH
--         EOMONTH 回傳值為 date 資料型態
SELECT EOMONTH(GETDATE())

星期五, 9月 16, 2011

[VFP] Class definition MSXML2.DOMDOCUMENT.4.0 is not found

在 Win7 32 bit 上安裝 VFP 9.0,安裝完畢後,一打開就看到下列圖示訊息,Task Pane Manager 竟然不正常,重灌也是同樣的情況,OrZ。

Class definition MSXML2.DOMDOCUMENT.4.0 is not found

根據錯誤訊息,檢查有 VFP 9.0 正常運作的電腦,發現有安裝 MSXML 4.0,果然把它安裝上去後,就 OK 啦。
  • 備註:Download Center 中的 MSXML 4.0 Service Pack 2 內有多個檔案,我只安裝 msxml.msi 而已

星期五, 9月 02, 2011

[Win] Windows 7 桌面圖示全部消失

從另外一個廠回到座位時,公司小姐急急忙忙把我叫住,並說明桌面上的圖示,通通不見啦,即使重新開機也不會出現,當時心中只有一個想法,OOXX 不會是中毒了吧,後來檢查了一下,發現只是設定值被她改掉而已,虛驚一場。
  • 在桌面上右鍵 => 檢視 => 勾選顯示桌面圖示
[Windows] Windows 7 桌面圖示全部消失 - 1
特地到 Windows XP 中尋找,原來 XP 中也有這個選項,果然是我少見多怪。
[Windows] Windows 7 桌面圖示全部消失 - 2