簡體   English   中英

SQL編號通配符問題

[英]SQL number Wildcard issue

我正在嘗試在我的日期 select 查詢中添加一個通配符,所以我只拉日期而不是時間。 即 2021-03-11 17:54:30.123。 我認為可以用數字代替#。

select AID, LocalCoAltIn,LocalCoAltOut,EventTime
from EXCDS.dbo.WKS_LOG_VIEW
where EventTime like '2021-03-11 ##:##:##:###';

即使它們在表中,我的查詢也沒有返回任何值。 謝謝。

不:不要使用字符串! 一種方法是轉換為日期:

select AID, LocalCoAltIn,LocalCoAltOut,EventTime
from EXCDS.dbo.WKS_LOG_VIEW
where convert(date, EventTime) = '2021-03-11';

另一種方法是使用范圍:

where EventTime >= '2021-03-11' and
      EventTime < '2021-03-12'

SQL 的大多數風格中的LIKE運算符僅支持_*通配符(匹配任何一個或多個字符)。 Gordon 為您提供了更好的方法,但如果您想修復 SQL 服務器上的當前查詢,您可以嘗試:

SELECT AID, LocalCoAltIn, LocalCoAltOut, EventTime
FROM EXCDS.dbo.WKS_LOG_VIEW
WHERE EventTime LIKE '2021-03-11 [0-9][0-9]:[0-9][0-9]:[0-9][0-9]:[0-9][0-9][0-9]';

SQL 服務器擴展了LIKE運算符以接受一些額外的東西,例如字符類。 LIKE中的[0-9]將匹配任何單個數字。

不確定like運算符是否可以按您的意願工作,但您仍然沒有什么選擇。 使用DATEPART function 檢索 year\month\etc 並將其與您需要的確切值進行比較

select AID, LocalCoAltIn,LocalCoAltOut,EventTime from EXCDS.dbo.WKS_LOG_VIEW where DATEPART(year,EventTime) = 2021 AND DATEPART(month,EventTime) = 3 AND DATEPART(day,EventTime = 11);

或者如果您不關心確切的日期部分並且只需要比較整個日期而不需要時間,請使用 Gordon Linoff 建議

暫無
暫無

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

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