2017-06-13 57 views
0

我有我的Open Date列此值:2017-6-14 AM 12:00:00使用LEFT查詢不能

我想拿起剛剛日期(2017-6-14)的一部分,所以我在查詢中使用LEFT()。不幸的是,我的結果顯示的不僅僅是'2017-6-14'。

這是我所做的查詢。

Select a.Name, b.Restaurant, a.City, c.[Postal Code] as 'State', 
    LEFT(a.[Open Date],CHAIRINDEX(' ',a.[Open Date]-1)), 
    a.CO as 'T Date', 
    (SELECT Count(Taskid) FROM Tasks WHERE Complete = 'True' AND SID = a.ID GROUP BY SID) AS 'Tasks Complete', 
    (SELECT COUNT(Complete) FROM Tasks WHERE Complete = 'false' AND T_Date <= cast(cast(getdate() as date) as datetime) AND SID = a.ID GROUP BY SID) AS 'Tasks Overdue' 
FROM Stores a 
JOIN Concepts b ON a.ConceptID = b.R_id 
JOIN States c ON a.State = c.Stateid WHERE a.[Open Date] >= cast(cast(getdate() as date) as datetime) 
ORDER BY a.[Open Date] ASC 
+0

使用日期轉換或格式化函數。不要試圖採取約會的左邊部分。 https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql –

+0

「不工作」不是描述性的。 –

+1

你在使用什麼數據庫引擎? –

回答

0

左會一直運作良好,如果[打開數據]爲varchar類型,但如果它是datime那麼你只能通過轉換提取的日期部分,例如:

SELECT CONVERT(date, [Open Date]) 

注意:任何情況下,如果[開放日期]是varchar,則-1應該在第一個括號之後:

LEFT(a.[Open Date],CHAIRINDEX(' ',a.[Open Date])-1) 
+0

這是一個日期時間,我使用CONVERT(日期,[開放日期]),但它看起來還是一樣! 2017-6-14上午12:00:00喜歡這個。 – Scarlett

+0

CONVERT(varchar,a。[開放日期],101)我試過這個,它的工作原理!感謝@Jayvee – Scarlett

+0

很酷的想法,很高興你找到了解決方案。 – Jayvee