簡體   English   中英

SQL 服務器日期列不一致

[英]SQL Server Date Column Inconsistent

我有字符串(nvarchar)格式的列日期。 我有這樣不一致的列

不一致的日期列

我有更多這樣的例子

2021-7-01
2021-8-01

首先,我嘗試過像這樣的 CASE WHEN

SELECT 
    CASE 
    WHEN DATE_IN LIKE '[0-9]{4}-[0-9]{2}-[0-9]{2}'
                    THEN CONVERT(datetime, date_in, 102)
                    WHEN date_in LIKE '[0-9]{4}-[0-9]{2}-[0-9]{2}'
                    THEN CONVERT(datetime, date_in) END AS DATE_IN, EMP_NAME,DATE_IN
FROM staging.irisEtcSingleFile

但是,output 是 NULL.. 我想要 output 是這樣的

2021-01-01
2021-07-01
2021-08-01

我真的很感激能得到答案..謝謝之前

試試這個片段,會產生很好的反應:

create table #t (txt varchar(100))
delete from #t
go

insert into #t select '2021-7-01'
insert into #t select '2021-8-01'
insert into #t select '2021-01-01'
insert into #t select '2021-07-01'
insert into #t select '2021-2-02'
insert into #t select '2021-08-01'

go

select 
    txt
from 
    #t
where
    txt not like '%[^0-9-]%' and
    len(replace(txt, '-', '')) = len(txt)-2 and
    txt like '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]'

Output:

2021-01-01
2021-07-01
2021-08-01

使用檢查此查詢

復制

SELECT 
    CASE 
    WHEN test_col LIKE REPLICATE('[0-9]',4) + '-[0-9]-' + REPLICATE('[0-9]',2)
                    THEN CONVERT(datetime, test_col, 102)
                    WHEN test_col LIKE REPLICATE('[0-9]',4) + '-' + REPLICATE('[0-9]',2) + '-' + REPLICATE('[0-9]',2)
                    THEN CONVERT(datetime, test_col) END AS test_col
FROM test

暫無
暫無

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

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