2014-10-10 75 views
0

我是新來編寫SQL查詢時遇到與在SQL中的Smalldatetime 定義的所有我需要的是月開始至月底之間tblVehicleDepreciationLine.LineDate日期時間列 tblVehicleDepreciationLine.LineDate問題.. 我讀了20個不同的日期時間解決方案,但似乎無法破解我需要什麼代碼才能得到我的結果..SQL日期時間在一個月

任何幫助將不勝感激。

Select 
    tblVehicle.Rego, 
    tblVehicle.CompliancePlate, 
    tblVehicleType.Description, 
    tblVehicleEquipmentStatus.Description As Description1, 
    tblBranch.Name, 
    tblVehicleDepreciationLine.WDV, 
    tblVehicle.ID, 
    tblVehicleDepreciationLine.LineDate 
From 
    tblVehicle 
    Inner Join tblVehicleType On tblVehicle.VehicleType_ID = tblVehicleType.ID 
    Inner Join tblVehicleEquipmentStatus On tblVehicle.VehicleEquipmentStatus_ID = tblVehicleEquipmentStatus.ID 
    Inner Join tblBranch On tblVehicle.ControllingBranch_ID = tblBranch.ID 
    Inner Join tblVehicleDepreciationLine On tblVehicleDepreciationLine.Vehicle_ID = tblVehicle.ID 
Where 
    (tblVehicleDepreciationLine.LineDate >= 
     ('(year(getdate()), month(getdate()), 1)') And 
     tblVehicle.VehicleEquipmentStatus_ID = 1) 
Or 
    (tblVehicleDepreciationLine.LineDate < 
     ('(year(getdate()), month(getdate())+1, 1)') And 
     tblVehicle.VehicleEquipmentStatus_ID = 2) 
Order By 
    tblVehicle.ControllingBranch_ID 
+1

您使用的數據庫是多少? – jpw 2014-10-10 00:52:49

回答

2

假設SQL Server。如果您想檢查的日期,如果第一個和最後一個月之間,你實際上是檢查它是否在同一年份和月份:

(
year(tblVehicleDepreciationLine.LineDate) = year(getdate()) 
and 
month(getdate()) = month(tblVehicleDepreciationLine.LineDate 
) 

或SQL Server,如果你想2012使用之間:

(
tblVehicleDepreciationLine.LineDate between 
datefromparts(year(getdate()), month(getdate()), 1) and eomonth(getdate()) 
) 

這可能不是最有效的方法來做到這一點,但它應該給你一個想法。

0

如果你想檢查一個日期是否在相同的年份和月份,你可以使用類似WHERE tblVehicleDepreciationLine.LineDate LIKE ('2012-10%')(你可能需要修改它以適應你的服務器根據你的服務器本地將日期轉換爲字符串的方式)

0
--Below dates will give some idea for you 
SELECT 
'Start of Current Month' = DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0), 
'End of Current Month'  = DATEADD(ms,-10,DATEADD(m, DATEDIFF(m,0,GETDATE())+1,0)), 
'Start of Next Month'  = DATEADD(m, DATEDIFF(m, 0, GETDATE())+1, 0) 


--Your WHERE clause would looks like below 
WHERE 
    (
     tblVehicleDepreciationLine.LineDate >= DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0) 
     AND tblVehicle.VehicleEquipmentStatus_ID = 1 
    ) 
    OR 
    (
     tblVehicleDepreciationLine.LineDate < DATEADD(m, DATEDIFF(m, 0, GETDATE())+1, 0) 
     AND tblVehicle.VehicleEquipmentStatus_ID = 2 
    ) 
相關問題