由於DATA移植已OK,現在就是要把應用也移植一下.
今天把ORACLE的應用也移植到SQL SERVER,發現有很多函數使用上,不盡相同.用慣了ORACLE,倒不習慣SQL SERVER了.
在ORACLE中日期格式,用TO_CHAR,想怎樣,就可怎樣.
比如2008/7/28 OR 2008-7-28 OR 2008.7.28 OR 7.28.2008….等等格式,用TO_CHAR USING YYMMDD的FORMAT組合,形成想要的格式,太方便了.
但SQL SERVER要實現2008/7/28卻讓我想了半天.
最終用CONVERT FUNCTION搞定之.
在下表中,左側的兩列表示將 datetime 或 smalldatetime 轉換為字元資料的 style 值。給 style 值加100,可獲得包括世紀數位的四位年份 (yyyy)。
不帶世紀數位 (yy) |
帶世紀數位 (yyyy) |
|
|
– |
0 或 100 (*) |
預設值 |
mon ddyyyy hh:miAM(或 PM) |
1 |
101 |
美國 |
mm/dd/yyyy |
2 |
102 |
ANSI |
yy.mm.dd |
3 |
103 |
英國/法國 |
dd/mm/yy |
4 |
104 |
德國 |
dd.mm.yy |
5 |
105 |
義大利 |
dd-mm-yy |
6 |
106 |
– |
dd monyy |
7 |
107 |
– |
mon dd,yy |
8 |
108 |
– |
hh:mm:ss |
– |
9 或 109 (*) |
預設值 + 毫秒 |
mon ddyyyy hh:mi:ss:mmmAM(或 PM) |
10 |
110 |
美國 |
mm-dd-yy |
11 |
111 |
日本 |
yy/mm/dd |
12 |
112 |
ISO |
yymmdd |
– |
13 或 113 (*) |
歐洲預設值+ 毫秒 |
dd monyyyy hh:mm:ss:mmm(24h) |
14 |
114 |
– |
hh:mi:ss:mmm(24h) |
– |
20 或 120 (*) |
ODBC 規範 |
yyyy–mm-dd hh:mm:ss[.fff] |
– |
21 或 121 (*) |
ODBC 規範(帶毫秒) |
yyyy–mm-dd hh:mm:ss[.fff] |
– |
126(***) |
ISO8601 |
yyyy-mm-ddThh:mm:ss:mmm(不含空格) |
– |
130* |
科威特 |
dd monyyyy hh:mi:ss:mmmAM |
– |
131* |
科威特 |
dd/mm/yyhh:mi:ss:mmmAM |
* 預設值(style 0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始終返回世紀數位 (yyyy)。
** 當轉換為 datetime 時輸入;當轉換為字元資料時輸出。
*** 專門用於 XML。對於從 datetime 或 smalldatetime 到 character 資料的轉換,輸出格式如表中所示。對於從float、money 或 smallmoney到 character 資料的轉換,輸出等同於style 2。對於從 real 到 character 資料的轉換,輸出等同於 style 1。
默認情況下,SQL Server 根據截止年份 2049 解釋兩位元數字的年份。即,兩位元數字的年份 49 被解釋為 2049,而兩位元數字的年份 50 被解釋為 1950。許多用戶端應用程式(例如那些基於 OLE 自動化物件的用戶端應用程式)都使用2030 作為截止年份。SQL Server 提供一個配置選項(\”兩位元數位的截止年份\”),藉以更改 SQL Server 所使用的截止年份並對日期進行一致性處理。然而最安全的辦法是指定四位元數字年份。
當從 smalldatetime 轉換為字元資料時,包含秒或毫秒的樣式將在這些位置上顯示零。當從 datetime 或 smalldatetime 值進行轉換時,可以通過使用適當的 char 或 varchar 資料類型長度來截斷不需要的日期部分。
下表顯示了從 float 或 real 轉換為字元資料時的 style. 值。
值 |
輸出 |
0(預設值) |
最大為 6 位數。根據需要使用科學記數法。 |
1 |
始終為 8 位值。始終使用科學記數法。 |
2 |
始終為 16 位值。始終使用科學記數法。 |
在下表中,左列表示從 money 或 smallmoney 轉換為字元資料時的 style. 值。
值 |
輸出 |
0(預設值) |
小數點左側每三位元數字之間不以逗號分隔,小數點右側取兩位數,例如4235.98。 |
1 |
小數點左側每三位元數字之間以逗號分隔,小數點右側取兩位數,例如3,510.92。 |
2 |
小數點左側每三位元數字之間不以逗號分隔,小數點右側取四位數,例如4235.9819。 |
如下是此函數的常用效果:
1
2 FORMAT RESULT
3. CONVERT(varchar(100), GETDATE(), 0): 07 28 2008 10:57AM
4. CONVERT(varchar(100), GETDATE(), 1): 07/28/08
5. CONVERT(varchar(100), GETDATE(), 2): 08.07.28
6. CONVERT(varchar(100), GETDATE(), 3): 28/07/08
7. CONVERT(varchar(100), GETDATE(), 4): 28.07.08
8. CONVERT(varchar(100), GETDATE(), 5): 28-07-08
9. CONVERT(varchar(100), GETDATE(), 6): 28 07 08
10. CONVERT(varchar(100), GETDATE(), 7): 07 28, 08
11. CONVERT(varchar(100), GETDATE(), 8): 10:57:46
12. CONVERT(varchar(100), GETDATE(), 9): 07 28 2008 10:57:46:827AM
13. CONVERT(varchar(100), GETDATE(), 10): 07-28-08
14. CONVERT(varchar(100), GETDATE(), 11): 08/07/28
15. CONVERT(varchar(100), GETDATE(), 12): 080728
28. CONVERT(varchar(100), GETDATE(), 13): 28 07 2008 10:57:46:937
17. CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
18. CONVERT(varchar(100), GETDATE(), 20): 2008-07-28 10:57:47
19. CONVERT(varchar(100), GETDATE(), 21): 2008-07-28 10:57:47.157
20. CONVERT(varchar(100), GETDATE(), 22): 07/28/08 10:57:47 AM
21. CONVERT(varchar(100), GETDATE(), 23): 2008-07-28
22. CONVERT(varchar(100), GETDATE(), 24): 10:57:47
23. CONVERT(varchar(100), GETDATE(), 25): 2008-07-28 10:57:47.250
24. CONVERT(varchar(100), GETDATE(), 100): 07 28 2008 10:57AM
25. CONVERT(varchar(100), GETDATE(), 101): 07/28/2008
26. CONVERT(varchar(100), GETDATE(), 102): 2008.07.28
27. CONVERT(varchar(100), GETDATE(), 103): 28/07/2008
28. CONVERT(varchar(100), GETDATE(), 104): 28.07.2008
29. CONVERT(varchar(100), GETDATE(), 107): 28-07-2008
30. CONVERT(varchar(100), GETDATE(), 108): 28 07 2008
31. CONVERT(varchar(100), GETDATE(), 107): 07 28, 2008
32. CONVERT(varchar(100), GETDATE(), 108): 10:57:49
33. CONVERT(varchar(100), GETDATE(), 109): 07 28 2008 10:57:49:437AM
34. CONVERT(varchar(100), GETDATE(), 110): 07-28-2008
35. CONVERT(varchar(100), GETDATE(), 111): 2008/07/28
36. CONVERT(varchar(100), GETDATE(), 112): 20080728
37. CONVERT(varchar(100), GETDATE(), 113): 28 07 2008 10:57:49:513
38. CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
39. CONVERT(varchar(100), GETDATE(), 120): 2008-07-28 10:57:49
40. CONVERT(varchar(100), GETDATE(), 121): 2008-07-28 10:57:49.700
ap-query.gif
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13856521/viewspace-411992/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/13856521/viewspace-411992/