簡體   English   中英

將varchar轉換為日期格式

[英]Convert varchar to date format

我想將varchar(50)列轉換為日期格式。 我使用以下代碼:

Update [dbo].[KYCStatus062013] 
Set [REGISTRATION_DATE_]= convert(datetime,[REGISTRATION_DATE_] ,103)

但是有一個錯誤說:

消息241,級別16,狀態1,行1轉換在從字符串轉換日期和/或時間時失敗。

我想要這種格式:dd-mmm-yyyy。 我沒有任何選項來創建另一個表/列,因此“更新”是我可以使用的唯一方法。 任何幫助將受到高度贊賞。

編輯:我的源數據如下所示:

21-MAR-13 07.58.42.870146 PM  
01-APR-13 01.46.47.305114 PM  
04-MAR-13 11.44.20.421441 AM  
24-FEB-13 10.28.59.493652 AM

編輯2:我的一些源數據還包含僅包含時間的錯誤數據。 例:

 12:02:24
 12:54:14
 12:45:31
 12:47:22

試試這個吧。

Update [dbo].[KYCStatus062013] 
Set [REGISTRATION_DATE_]= REPLACE(CONVERT(VARCHAR(11),[REGISTRATION_DATE_],106),' ' ,'-')

這將輸出為dd-mmm-yyyy

如果要更新為日期格式,則必須修改表格。

編輯1 =

Update [dbo].[KYCStatus062013] 
    Set [REGISTRATION_DATE_]= REPLACE(CONVERT(VARCHAR(11),convert(datetime,left([REGISTRATION_DATE_],9),103),106),' ' ,'-')

編輯2 =檢查這個

http://sqlfiddle.com/#!3/d9e88/7

編輯3 =如果您只輸入時間,請選中此項

http://sqlfiddle.com/#!3/37828/12

該錯誤表明表中的某個值與103格式不匹配,無法轉換。 您可以使用ISDATE函數來隔離有問題的行。 最終錯誤意味着您的表格數據不佳,這導致了我的主要擔憂。 為什么不使用日期時間或日期數據類型並在選擇數據時使用轉換樣式,甚至在應用程序層更改演示文稿? 這樣可以防止出現您所描述的問題。

我強烈建議您更改列的數據類型,以更准確地表示存儲的數據。

PostgreSQL格式化函數提供了一組功能強大的工具,用於將各種數據類型(日期/時間,整數,浮點,數字)轉換為格式化字符串,以及將格式化字符串轉換為特定數據類型。

to_date(text, text)
to_date('05 Dec 2000', 'DD Mon YYYY')

有關詳細信息,請單擊此處

http://www.postgresql.org/docs/8.1/static/functions-formatting.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM