簡體   English   中英

SQL Server 2012:將12小時AM / PM nchar轉換為24小時DateTime格式

[英]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.

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