簡體   English   中英

SQL Server將varchar轉換為datetime

[英]SQL Server Converting varchar to datetime

我在SQL Server中將varchar轉換為datetime遇到問題。 我想轉換/更新表中的整個列[datelog]

[dd.mm.yyyy hh:mm:ss]` to `[yyyy-mm-dd hh:mm:ss]

棘手的解決方案,

DECLARE @inputDate AS VARCHAR(20)='21.11.2015 06:59:00' -- [dd.mm.yyyy hh:mm:ss]
SET @inputDate = REPLACE(@inputDate ,'.' ,'/')
SELECT CONVERT(VARCHAR(24) ,CONVERT(DATETIME ,@inputDate ,103) ,121) OutputDate -- [yyyy-mm-dd hh:mm:ss]

仍然需要根據表列進行更改。

在SQL Server 2012+中,可以根據特定區域性使用PARSETRY_PARSE來解析文本值。

假設您的文字遵循德國文化('de-DE'),則可以使用以下方式將其解析為日期時間:

select PARSE('24.11.2015 13:10:55' as datetime using 'de-DE')

例如:

select PARSE(datelog as datetime using 'de-DE')

真正的解決方案是使用正確的字段類型,即datetime 幾乎可以保證有人在某個地方輸入格式錯誤的文本,或者嘗試使用錯誤的區域性來轉換文本。

另一方面,日期類型沒有格式,它們只是二進制值。 使用它們更快,更安全,更容易。

具有一列varchar類型的臨時表

create table #temp3 (someDate varchar (30))
insert into #temp3 values ('23.03.1989 15:23:43')

使用concat,substring和right的組合

select concat
(
SUBSTRING(someDate,7,4),'-', SUBSTRING(someDate,4,2),'-',SUBSTRING(someDate,1,2), ' ', right(someDate, 8)
)
from #temp3

給:1989-03-23 15:23:43

暫無
暫無

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

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