討論區快速選單
知識庫快速選單
政府補助!學嵌入式+物聯網 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
請問:西曆日期轉換至中華民國曆日期的語法?
更改我的閱讀文章字型大小
作者 : toyboy(toyboy) 貼文超過200則人氣指數超過30000點
[ 貼文 438 | 人氣 37407 | 評價 1120 | 評價/貼文 2.56 | 送出評價 71 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/10/19 下午 03:09:46
各位大大:
     請問:西曆日期轉換至中華民國曆日期的語法為何?
     如WorkDo資料表中有一日期欄位DoDate,其中有三筆資料
     ID DoDate
     1 2005/10/1
     2
     3 2005/9/6

     其查詢結果如下:
     ID DoDate
     1 94/10/1
     2
     3 94/9/6

     若要達到上述結果,語法該如何下呢?
     謝謝各位大大的教導,謝謝!!^_^
作者 : frp(坤哥) Access頂尖高手貼文超過500則
[ 貼文 899 | 人氣 1706 | 評價 4790 | 評價/貼文 5.33 | 送出評價 12 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人toyboy註記此篇回應為最佳解答 2005/10/19 下午 09:33:24
若是 Microsoft 的系列(SQL Server/Access)...試試

   
     Format(DoDate,'e/m/d')

作者 : toyboy(toyboy) 貼文超過200則人氣指數超過30000點
[ 貼文 438 | 人氣 37407 | 評價 1120 | 評價/貼文 2.56 | 送出評價 71 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/10/20 上午 08:59:18
謝謝坤哥大大的教導,此語法在Access可以用,但是在SQL Server上
卻出現以下訊息:
'Format' 為無法識別的 函數名稱。
有找過SQL Server的help,有個Format_STRING的用法
但執行後出現以下訊息:
'Format_STRING' 為無法識別的 函數名稱。

還有其它什麼語法,可供參考呢?
謝謝各位大大的教導,謝謝!!^_^
作者 : alan007(alan)
[ 貼文 100 | 人氣 3274 | 評價 240 | 評價/貼文 2.4 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人toyboy註記此篇回應為很有道理 2005/10/20 上午 11:30:30
沒有系統函數就自己寫個簡單的函數來執行吧
我寫過類似的把文字格式的日期(0940101)轉成2005/1/1
作者 : toyboy(toyboy) 貼文超過200則人氣指數超過30000點
[ 貼文 438 | 人氣 37407 | 評價 1120 | 評價/貼文 2.56 | 送出評價 71 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/10/20 上午 11:38:32
謝謝alan大大的教導,目前已開始進行[自訂函數]寫法的了解

小弟算是SQL Server之新手,以後若有不懂的地方
還請各位大大多多幫忙!!
謝謝各位大大的教導,謝謝!!^_^
作者 : hkln(HKLN.net) Perl卓越專家Oracle卓越專家資訊類作業求救優秀好手一般優秀好手程式設計甘苦談優秀好手C#卓越專家貼文超過2000則人氣指數超過100000點
[ 貼文 2135 | 人氣 122272 | 評價 14600 | 評價/貼文 6.84 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人toyboy註記此篇回應為很有道理 2005/10/20 下午 10:08:37
> 請問:西曆日期轉換至中華民國曆日期的語法為何?

不知是否可行:先用 DATEADD 把日期減去十一年,然後用 CONVERT 函數,參數 style=11 轉成 yy/mm/dd 格式。
作者 : toyboy(toyboy) 貼文超過200則人氣指數超過30000點
[ 貼文 438 | 人氣 37407 | 評價 1120 | 評價/貼文 2.56 | 送出評價 71 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/10/21 下午 02:17:05
HKLN大大:
     謝謝您的建議,但這方法最大關鍵在於,若日期欄位內有null值
     則就會造成錯誤了,就如同我之前所試的方法:使用函數分別取
     "年","月","日",先把年減去1911,然後再組字串

     謝謝各位大大的教導!!謝謝!!^_^
作者 : bluetulip(BlueTulip) Visual Basic優秀好手貼文超過1000則人氣指數超過10000點
[ 貼文 1127 | 人氣 28366 | 評價 4070 | 評價/貼文 3.61 | 送出評價 15 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人toyboy註記此篇回應為很有道理 2005/10/21 下午 06:08:39
就算用取字串的方式,碰上Null值一樣會出問題的。
用Dataadd的好處是,用在自訂函式時,它同時可以處理年、月、日的增減....
作者 : bluetulip(BlueTulip) Visual Basic優秀好手貼文超過1000則人氣指數超過10000點
[ 貼文 1127 | 人氣 28366 | 評價 4070 | 評價/貼文 3.61 | 送出評價 15 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/10/21 下午 06:09:20
剛打錯字了喵 @@
是Dateadd 不好意思 @@
作者 : hkln(HKLN.net) Perl卓越專家Oracle卓越專家資訊類作業求救優秀好手一般優秀好手程式設計甘苦談優秀好手C#卓越專家貼文超過2000則人氣指數超過100000點
[ 貼文 2135 | 人氣 122272 | 評價 14600 | 評價/貼文 6.84 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/10/21 下午 07:49:26
> 謝謝您的建議,但這方法最大關鍵在於,若日期欄位內有null值
> 則就會造成錯誤了,就如同我之前所試的方法:使用函數分別取
> '年','月','日',先把年減去1911,然後再組字串


原本想這樣:
ISNULL(CONVERT(CHAR(8), DATEADD([YEAR], 89, GETDATE()), 11), NULL)

不過會有百年蟲問題,最後只想到:

SELECT ISNULL(CAST(DATEPART([YEAR], GETDATE()) - 1911 AS VARCHAR)
     + '/' + CONVERT(CHAR(5), GETDATE(), 1), NULL) AS Expr1
作者 : aaaaaaaa(路人) SQL Language優秀好手貼文超過200則人氣指數超過10000點
[ 貼文 271 | 人氣 11161 | 評價 1760 | 評價/貼文 6.49 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人toyboy註記此篇回應為很有道理 2005/10/25 下午 01:45:53
CREATE FUNCTION DateToStrF(@Date Datetime, @Format varChar(40))
RETURNS varChar(40)
AS
BEGIN
--OUTPUT
DECLARE @Expression varChar(40)

SET @Expression = ''
IF SUBSTRING(@FORMAT,1,2) = 'YY' OR SUBSTRING(@FORMAT,1,4) = 'YYYY'
BEGIN
--判斷產出格式(/,-)
IF PATINDEX('%/%',@FORMAT) > 0
BEGIN
IF SUBSTRING(@FORMAT,1,2) = 'YY' AND SUBSTRING(@FORMAT,1,4) <> 'YYYY'
BEGIN
SET @Expression = CONVERT(VARCHAR,@Date,11 )
END
IF SUBSTRING(@FORMAT,1,2) = 'YY' AND SUBSTRING(@FORMAT,1,4) = 'YYYY'
BEGIN
SET @Expression = CONVERT(VARCHAR,@Date,111 )
END
END
IF PATINDEX('%-%',@FORMAT) > 0
BEGIN
IF SUBSTRING(@FORMAT,1,2) = 'YY' AND SUBSTRING(@FORMAT,1,4) <> 'YYYY'
BEGIN
SET @Expression = SUBSTRING(CONVERT(VARCHAR,@Date,12),1,2)+'-'+SUBSTRING(CONVERT(VARCHAR,@Date,12),3,2)+'-'+SUBSTRING(CONVERT(VARCHAR,@Date,12),5,2)
END
IF SUBSTRING(@FORMAT,1,2) = 'YY' AND SUBSTRING(@FORMAT,1,4) = 'YYYY'
BEGIN
SET @Expression = SUBSTRING(CONVERT(VARCHAR,@Date,112),1,4)+'-'+SUBSTRING(CONVERT(VARCHAR,@Date,112),5,2)+'-'+SUBSTRING(CONVERT(VARCHAR,@Date,112),7,2)
END
END
IF (PATINDEX('%/%',@FORMAT) = 0) AND (PATINDEX('%-%',@FORMAT) = 0)
BEGIN
IF SUBSTRING(@FORMAT,1,2) = 'YY' AND SUBSTRING(@FORMAT,1,4) <> 'YYYY'
BEGIN
SET @Expression = CONVERT(VARCHAR,@Date,12 )
END
IF SUBSTRING(@FORMAT,1,2) = 'YY' AND SUBSTRING(@FORMAT,1,4) = 'YYYY'
BEGIN
SET @Expression = CONVERT(VARCHAR,@Date,112 )
END
END
END
作者 : aaaaaaaa(路人) SQL Language優秀好手貼文超過200則人氣指數超過10000點
[ 貼文 271 | 人氣 11161 | 評價 1760 | 評價/貼文 6.49 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/10/25 下午 02:02:47
好像貼不上去~~都會超過2千字
可以考慮自行寫function~~產出格式就可以自行定義也不錯~~
作者 : bluetulip(BlueTulip) Visual Basic優秀好手貼文超過1000則人氣指數超過10000點
[ 貼文 1127 | 人氣 28366 | 評價 4070 | 評價/貼文 3.61 | 送出評價 15 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人toyboy註記此篇回應為很有道理 2005/10/25 下午 06:20:09
to aaaaaaaa(路人)
if 迴圈用太多的話,會很亂唷!接你的人會很辛苦。
請善用 select case....end

to 原發問者:
您的想法怪怪的,用字串可以用isnull來處理null值。
為何用dateadd時就不能使用isnull???
作者 : aaaaaaaa(路人) SQL Language優秀好手貼文超過200則人氣指數超過10000點
[ 貼文 271 | 人氣 11161 | 評價 1760 | 評價/貼文 6.49 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/10/26 上午 11:22:51
用IF是判斷傳入值~~
如果改成用CASE WHEN會更亂~~你可以試著想看看~~小弟也曾想過用CASE WHEN
但是接的人會更看不懂~~
用IF可以分隔出那個格式看那段~~^^

小弟的感想~~
作者 : bluetulip(BlueTulip) Visual Basic優秀好手貼文超過1000則人氣指數超過10000點
[ 貼文 1127 | 人氣 28366 | 評價 4070 | 評價/貼文 3.61 | 送出評價 15 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/10/27 上午 12:26:29
那是排版的問題.....
 板主 : AXNET
 > SQL Language - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - SQL Language - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
SQL Language
1 ㄉ一ˊㄎㄜˋ 1330 
2 路人 1270 
3 坤哥 700 
4 吳馨琳 460 
5 凡人 440 
6 老骨頭 390 
7 pome5 380 
8 BK. 330 
9 Tony 310 
10 HKLN.net 250 
SQL Language
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.0625