2012-02-16 77 views
1

我需要在SQL中轉換日期格式 當前格式是yyyy/mm/dd -hh:mm:ss:sss,我需要將它轉換爲yyyy-mm-dd hh:mm :ss CST 我並不真正瞭解SQL,但做了一些研究,發現我可以使用instr來查找字符串並將其替換,但是,無論我嘗試什麼,總會有東西關閉:( 任何人都可以在此幫忙我呢?在此先感謝。在SQL開發人員更新日期格式

順便說一句,這是在Oracle SQL開發人員,所以語法是從以前的答案不同。再次感謝

+3

存儲在VARCHAR列或日期時間列中的日期? – SWeko 2012-02-16 14:42:49

+1

您是否需要轉換時區(例如調整時間)?如果沒有,那麼你爲什麼擔心格式?格式是介紹的東西。使用適當的數據類型(日期時間,smalldatetime)存儲日期/時間數據,當*顯示*數據時,擔心字符串格式,CST等。 – 2012-02-16 15:07:24

回答

0

CONVERT()函數通常用於此目的。第三PARAMET呃讓你指定所需的日期格式。

如果日期已經在一個字符串中,那麼先將其轉換爲日期類型,然後再將其轉換回所需格式的字符串。

0

如果日期存儲爲DATETIME,那麼你可以通過執行以下操作將它轉換爲所需格式的字符串:

SELECT CONVERT(VARCHAR(19),YourColumn,120) 
FROM YourTable 

CAST AND CONVERT

1

如果您當前的列存儲爲VARCHAR(它看起來是基於你的例子),你可以將它通過以下方式爲日期時間。

declare @date varchar(25) 
set @date = '2012/02/16-09:40:30:000' 

select Convert(datetime, Left(@date, 4) + '-' + 
     substring(@date, 6, 2) + '-' + 
     substring(@date, 9, 2) + ' ' + 
     substring(@date, 12, 8)) As NewDate 

其結果將是2012-02-16 09:40:30.000

有很多網站有上轉換日期時間的詳細信息:

  1. http://www.sql-server-helper.com/tips/date-formats.aspx
  2. http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/

如果日期存儲爲日期時間,那麼你可以這樣做讓你的格式:

SELECT convert(varchar, getdate(), 120) 
+0

謝謝你的回答。我很抱歉,但轉換甚至在SQL Server中支持?它不能識別命令 – user1200687 2012-02-16 18:24:35

+0

是的,在sql-server上支持CONVERT()。你用什麼查詢? – Taryn 2012-02-16 18:28:35

+0

嘿,所以我覺得我很困惑,並通過說它是sql服務器誤導了線程,但實際上我在ORACLE sql developer中工作,嘆息... 如果它在Oracle中,你會知道該怎麼做嗎?如果我只是使用字符串或位置的字符串更新命令,會更容易? – user1200687 2012-02-17 04:56:22

0
declare @ds varchar(23)='2012/02/16 12:57:03:002'; --your current format 
select convert(varchar(30),cast(@ds as datetime),120)+' CST' --new format you specified 
+0

的問題,我試圖在表中更新第一列灣原始格式是varchar(200) 我這樣做了: 從B選擇第一個 聲明@ds varchar(23)= FIRST 選擇convert(varchar(30),cast(@ds as datetime),120)+'CST' 但它沒有工作,有人可以糾正它嗎?對不起,如果我犯了愚蠢的錯誤,這是我第一次使用sql – user1200687 2012-02-16 21:28:45

+0

Update b set [FIRST] = convert(varchar(200),cast([FIRST] as datetime),120)+'CST'; – 2012-02-16 21:42:58

+0

變量@ds僅在原始示例中聲明爲插圖。 – 2012-02-16 21:46:49

1

非常感謝你對你的球員的幫助!我得到這個整理其他用戶的幫助下,該命令是,

update b 
set first= to_char(substr(FIRST,1,4)||'-'||substr(FIRST, 6, 2)||'-'||substr(FIRST, 9, 2)||' '||substr(FIRST, 12, 8)) 

謝謝:) Mylie

+0

您應該將此標記爲答案。 – Taryn 2012-02-20 18:05:50