我有一個帶有 DateFrom 列的表

它是 col 中的 nvarchar col 我有這樣的資料
01
02
10/10/2020
04
一些字串和一些 DateTime 值我需要將它轉換為 DateTime 但只有當它是一個日期如果不是然后像它那樣拉出值這可能嗎?謝謝 ...
uj5u.com熱心網友回復:
一個簡單的嘗試演員應該在這里完成作業
DECLARE @Table TABLE (Val NVARCHAR(20))
INSERT INTO @Table
VALUES('1'),('2'),('10/10/2020'),('04')
SELECT
*,
TRY_CAST(Val AS DATE)
FROM @Table
結果

uj5u.com熱心網友回復:
像這樣的事情應該有效。它使用 CASE 陳述句來檢查該值是否為有效日期,如果是,則將其轉換為 DATETIME,然后將其轉換為 VARCHAR(因此日期和其他值可以作為同一列回傳)。
如果您需要不同的格式,您可以在此處找到其他日期時間字串樣式:

uj5u.com熱心網友回復:
您可以使用 case 陳述句輕松檢查這一點。Postgres 示例
select case when '12/12/2021' ~ '\d{2}\/\d{2}\/\d{4}' then 'this is the date' ELSE 'this is a string' end;
->this is the date
select case when 'some text' ~ '\d{2}\/\d{2}\/\d{4}' then 'this is the date' ELSE 'this is a string' end;
->this is a string
所以你可以像這樣使用它
select case when fild_01 ~ '\d{2}\/\d{2}\/\d{4}' then TO_DATE(fild_01,'DD/MM/YYYY')::text ELSE fild_01 end from test_table;
如您所見,案例構造無法概括兩種不同型別的資料,因此我不得不將它們轉換為相同型別的文本
uj5u.com熱心網友回復:
使用TRY_CONVERT功能,搭配風格107
SELECT TRY_CONVERT(datetime, 'Jun 27 2021 12:22AM', 107)
| 結果 |
|---|
| 2021-06-27 00:22:00.000 |
如果值不是日期,則回傳 null
uj5u.com熱心網友回復:
您可以根據自己的需要進行選擇。
當您想設定默認值時:
SELECT IIF(ISDATE(Val) = 1 , Val,'YOUR_DEFAULT_VALUE')
當默認值無關緊要(它將為 NULL):
SELECT TRY_CAST(NULL AS DATE)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/323657.html
標籤:sql sql-server
下一篇:回圈遍歷兩個日期列
