2013-02-08 76 views
-2

這是我的看法如何修復日期時間迄今爲止只有

SELECT  AmenityValidDatesPriceID, AmenityID, AmenityValidDatesFrom, AmenityValidDatesTo, AddedDate, LastModifyDate, AddedUser, LastModifyUser, 
         IsDeleted 
FROM   dbo.DataManagement_Hotels_Amenities_AmenityValidDatesPrice 
WHERE  (IsDeleted = 0) 

它返回我AmenityValidDatesFrom,AmenityValidDatesTo爲DATETIME

,並在前端我只是需要時間

public List<BLL.Entities.DataManagement_Hotels_Amenities_AmenityValidDatesPrice> SelectByAmenityID(int ID) 
      { 
       DAL.DynamicSearchViewDataContext Viewcontext = new DAL.DynamicSearchViewDataContext(); 
       DAL.SelectSectionDataContext SpContext = new DAL.SelectSectionDataContext(); 
       var Query = (from car in Viewcontext.View_DataManagement_Hotel_Amenities_Dates 
          where car.AmenityID.Equals(ID) 
          select new BLL.Entities.DataManagement_Hotels_Amenities_AmenityValidDatesPrice 
          { 
           AmenityID = (int)car.AmenityID, 
           //AmenityValidDatesFrom = (DateTime)car.AmenityValidDatesFrom, 
           //AmenityValidDatesTo = (DateTime)car.AmenityValidDatesTo 

           AmenityValidDatesFrom = ((DateTime)car.AmenityValidDatesFrom).Date, 
           AmenityValidDatesTo = ((DateTime)car.AmenityValidDatesTo).Date 


          }).ToList<BLL.Entities.DataManagement_Hotels_Amenities_AmenityValidDatesPrice>(); 
       return Query; 

      } 

這是我的代碼

它給

錯誤隱含轉換

+0

你的問題是什麼?你的信息錯誤是什麼? – 2013-02-08 12:17:34

+1

你使用sql server或其他? – Prashant16 2013-02-08 12:18:13

+0

可能重複的[如何截斷日期時間在SQL Server?](http://stackoverflow.com/questions/923295/how-can-i-truncate-a-datetime-in-sql-server) – 2013-02-08 12:21:39

回答

1

請改變你的看法如下圖所示:

SELECT AmenityValidDatesPriceID, 
     AmenityID, 
     CONVERT(VARCHAR, AmenityValidDatesFrom,101) AS AmenityValidDatesFrom, 
     CONVERT(VARCHAR, AmenityValidDatesTo,101) AS AmenityValidDatesTo, 
     CONVERT(VARCHAR, AddedDate,101) AS AddedDate, 
     CONVERT(VARCHAR, LastModifyDate,101) AS LastModifyDate, 
     AddedUser, 
     LastModifyUser, 
     IsDeleted 
FROM dbo.DataManagement_Hotels_Amenities_AmenityValidDatesPrice 
WHERE IsDeleted = 0 

它應該工作。

更新:需要

空檢查。

public List<BLL.Entities.DataManagement_Hotels_Amenities_AmenityValidDatesPrice> SelectByAmenityID(int ID) 
{ 
    DAL.DynamicSearchViewDataContext Viewcontext = new DAL.DynamicSearchViewDataContext(); 
    DAL.SelectSectionDataContext SpContext = new DAL.SelectSectionDataContext(); 
    var Query = (from car in Viewcontext.View_DataManagement_Hotel_Amenities_Dates 
       where car.AmenityID.Equals(ID) 
       select new BLL.Entities.DataManagement_Hotels_Amenities_AmenityValidDatesPrice 
       { 
        AmenityID = (int)car.AmenityID, 
        if (car.AmenityValidDatesFrom != null && car.AmenityValidDatesFrom.ToString() != "") 
        { 
         AmenityValidDatesFrom = car.AmenityValidDatesFrom.Date 
        }, 
        if (car.AmenityValidDatesTo != null && car.AmenityValidDatesTo.ToString() != "") 
        { 
         AmenityValidDatesTo = car.AmenityValidDatesTo.Date 
        } 
       }).ToList<BLL.Entities.DataManagement_Hotels_Amenities_AmenityValidDatesPrice>(); 
    return Query; 
} 
+0

參數「值」是錯誤的類型。預期'System.DateTime'。實際'System.Nullable'1 [System.DateTime]'。這個錯誤我得到了 – 2013-02-08 12:30:47

+0

所有日期列中是否有空單元格或空值單元格? – 2013-02-08 12:32:14

+0

如果爲null,那麼只有AmenityValidDatesFrom =((DateTime)car.AmenityValidDatesFrom).Date, AmenityValidDatesTo =((DateTime)car.AmenityValidDatesTo).Date,這兩個語句會給你錯誤。 – 2013-02-08 12:33:55

1

試試這個

SELECT AmenityValidDatesPriceID , 
     AmenityID , 
     CONVERT(VARCHAR(10), AmenityValidDatesFrom, 103) AS AmenityValidDatesFrom , 
     CONVERT(VARCHAR(10), AmenityValidDatesTo, 103) AS AmenityValidDatesTo , 
     CONVERT(VARCHAR(10), AddedDate, 103) AS AddedDate , 
     CONVERT(VARCHAR(10), LastModifyDate, 103) AS LastModifyDate , 
     AddedUser , 
     LastModifyUser , 
     IsDeleted 
FROM dbo.DataManagement_Hotels_Amenities_AmenityValidDatesPrice 
WHERE IsDeleted = 0 

它會給出 'DD/MM/YYYY' 格式的日期。如果你想在「MM/DD/YYYY」格式的日期,然後用101代替103

+0

我修改view.and當我再次嘗試獲取數據時,它顯示代碼中的錯誤參數'值'是錯誤的類型。預期'System.DateTime'。實際'System.Nullable'1 [System.DateTime]'。 – 2013-02-08 12:32:40

+0

這將允許可空類型:'car.AmenityValidDatesFrom.GetValueOrDefault()。Date' – stuartd 2013-02-08 12:39:26

0

使用此視圖,而不是保持DATETIME數據類型,而擺脫時間部分:

SELECT AmenityValidDatesPriceID , 
     AmenityID , 

     DATEADD(D, 0, DATEDIFF(D, 0, AmenityValidDatesFrom)) AS AmenityValidDatesFrom 
     DATEADD(D, 0, DATEDIFF(D, 0, AmenityValidDatesTo)) AS AmenityValidDatesTo 
     DATEADD(D, 0, DATEDIFF(D, 0, AddedDate)) AS AddedDate 
     DATEADD(D, 0, DATEDIFF(D, 0, LastModifyDate)) AS LastModifyDate 

     AddedUser , 
     LastModifyUser , 
     IsDeleted 
FROM dbo.DataManagement_Hotels_Amenities_AmenityValidDatesPrice 
WHERE IsDeleted = 0