![](/img/trans.png)
[英]Convert DateTime String 24 Hr format from SQL to 12 Hr with Am/PM
[英]SQL Server 2012 : Convert 12Hr AM/PM nchar to 24Hr DateTime Format
這里的第一個帖子/問題。 我正在嘗試將nchar轉換為datetime。 我查找的所有示例都顯示從24轉換為12小時,或者僅處理時間而不是轉換的完整日期。 我不是SQL的本機,並且我仍在學習基礎知識,因此希望能提供任何幫助。
我有一個表格是從大量的.txt文件中讀取的。
警報是nchar文字,
AlarmTime也是我從文本文件中讀取日期的nchar 。
Alarm | AlarmTime
1 | 7/6/2016 10:10:42 AM
2 | 7/10/2016 6:41:23 PM
3 | 8/4/2016 4:35:53 PM
我想將其轉換為日期時間格式,而不是將其存儲為nchar。 每當我嘗試轉換時,都會出現錯誤: 從字符串轉換日期和/或時間時轉換失敗。
我正在尋找的結果是這只是存儲為datetime:
Alarm | AlarmTime
1 | 7/6/2016 10:10:42
2 | 7/10/2016 18:41:23
3 | 8/4/2016 16:35:53
我曾考慮過使用分隔符將日期和時間分成多個單獨的列,然后稍后將它們放回一起。 或者使用PM添加時間,然后將列轉換為日期時間。 但是這些都顯得很麻煩,而且我認為要實現這一目標我很容易錯過。
提前致謝!
由於您在2012年,因此建議您使用Try_Convert()。 這將捕獲任何轉換錯誤。 (假設您的數據字符串為m / d / y)
要識別偽造記錄,請嘗試:
Select * from YourTable where Try_Convert(datetime,AlarmTime) is null
用於重新格式化數據的示例代碼
Declare @YourTable table (Alarm int,AlarmTime nvarchar(50))
Insert Into @YourTable values
( 1,'7/6/2016 10:10:42 AM'),
( 2,'7/10/2016 6:41:23 PM'),
( 3,'8/4/2016 4:35:53 PM')
Select A.*
,ReFormated = format(try_convert(datetime,AlarmTime),'M/d/yyyy HH:mm:ss')
,AsDateTime = try_convert(datetime,AlarmTime)
From @YourTable A
返回
Alarm AlarmTime ReFormated AsDateTime
1 7/6/2016 10:10:42 AM 7/6/2016 10:10:42 2016-07-06 10:10:42.000
2 7/10/2016 6:41:23 PM 7/10/2016 18:41:23 2016-07-10 18:41:23.000
3 8/4/2016 4:35:53 PM 8/4/2016 16:35:53 2016-08-04 16:35:53.000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.