我在sql Server 2008表中有一个名为ShiftDate的DATETIME列.我想将其转换为查询中的DATE列:
SELECT ID,ScheduleID,ShiftDate,CONVERT(DATE,ShiftDate) AS ProductionDate FROM dbo.ScheduleResults
我在SSMS中编辑这个查询.如果我在标准查询窗口中运行查询,我没有收到任何错误.如果我在视图编辑器窗口中运行这个,我会收到错误“无法调用日期方法”.
SELECT ID,CAST(ShiftDate AS DATE) AS ProductionDate FROM dbo.ScheduleResults
完整的错误信息是:
Executed sql statement: SELECT ID,CAST(ShiftDate as DATE).ToString() AS ProductionDate FROM dbo.ScheduleResults Error Source: .Net sqlClient Data Provider Error Message: Cannot call methods on date.
我倾向于认为这是SSMS中的一个错误,但是我想从StackOverflow人员得到一些有关如何将datetime列转换为日期的反馈.我可以很容易地把它转换成一个字符串列,但它并不理想,因为Excel不会看到它作为一个日期.
解决方法
你是正确的,这是SSMS中的一个错误.我正在使用sql Server Management Studio 2008 R2,当我尝试使用内置的设计器创建一个视图时,我得到与您相同的错误消息:
sql Execution Error Error Source: .Net sqlClient Data Provider Error Message: Cannot call methods on date.
正如@Aaron Bertrand所说,要解决这个问题,选择“新建查询”并在“查询”窗口中创建“查看”.对于你的代码,它将是:
CREATE VIEW myView AS SELECT ID,CAST(ShiftDate AS DATE) AS ProductionDate FROM dbo.ScheduleResults