簡體   English   中英

轉換存儲為文本的多種日期格式

[英]Convert multiple date formats stored as text

我有一列是作為文本存儲的日期列。 它具有三種格式。

  1. dd mmm yyyy
  2. MM / dd / yyyy
  3. yyyy-mm-dd

在此處輸入圖片說明

我需要將所有這些轉換為一種格式。 我希望112(yyyymmdd)

任何人都可以提供幫助,因為我不斷出現超出范圍的錯誤。

我有它可以正確返回此

CONVERT(varchar(10), ISNULL(CAST(cf3.FieldValue as date),CAST('01/01/1900' as date)),101)

但是我似乎無法然后將其轉換為yyyymmdd格式而沒有范圍錯誤。

輸入:

01 Jan 1900
12/5/2013
2013-12-10

查詢:

SELECT CONVERT(VARCHAR, CONVERT(DATE, TestColumn), 112)
FROM tblTestTable 

輸出:

19000101
20131205
20131210

使用SQL Server 2008 R2

您可以將STR_TO_DATEDATE_FORMAT結合使用以獲得所需的結果。

SELECT
IFNULL(
  DATE_FORMAT(STR_TO_DATE(COL_NAME, '%d %b %Y'), '%Y%m%d'), 
  IFNULL(
    DATE_FORMAT(STR_TO_DATE(COL_NAME, '%d-%m-%Y'), '%Y%m%d'),
    DATE_FORMAT(STR_TO_DATE(COL_NAME, '%Y-%m-%d'), '%Y%m%d')
  )
) FROM TABLE_NAME;

STR_TO_DATE將字符串轉換為日期時間數據類型,然后DATE_FORMAT將日期時間轉換為所需的格式( '%Y%m%d' -> 'yyyymmdd' )。

declare @mydate datetime = '2017-03-20'

select RIGHT('0' + CAST(DATEPART(DD,@mydate) as nvarchar(max)),2) + ' ' + UPPER(CAST(DATENAME(month,@mydate) AS VARCHAR(3))) + ' ' + CAST(DATEPART(YEAR, @mydate) as nvarchar(MAX)) as 'dd mmm yyyy',
RIGHT('0' + CAST(DATEPART(DD,@mydate) as nvarchar(max)),2) + '/' + RIGHT('0' + CAST(DATEPART(MONTH, @mydate) as nvarchar(Max)),2) + '/' + CAST(DATEPART(YEAR, @mydate) as nvarchar(MAX)) as 'dd/mm/yyyy',
CAST(DATEPART(YYYY,@mydate) as nvarchar(max)) + '-' + RIGHT('0' + CAST(DATEPART(MONTH, @mydate) as nvarchar(Max)),2) + '-' + RIGHT('0' + CAST(DATEPART(DD, @mydate) as nvarchar(MAX)),2) as 'yyyy-mm-dd'

您可以手動獲取日期的相應日期部分並自行執行格式化。 (如果所需格式不容易獲得)

暫無
暫無

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

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