【发布时间】:2020-05-28 00:07:52
【问题描述】:
我创建了一个 SQL Server 视图并更新了视图以仅选择没有时间的日期部分,并且该视图在 SQL Server 中正常工作,我通过单击“更新模型自”从项目图中的数据库中更新了模型数据库”。
更新后,当我在浏览器中运行项目时,它仍在读取订单日期和时间,我从模型图中删除了 SQL Server 视图并再次添加它,但是当我在浏览器中运行项目时,它仍然在读取日期和时间。
我是否需要在模型中更新模型本身的任何内容或如何解决此问题?
这是视图:
CREATE VIEW [dbo].[LAB_RESULTS_CLINIC_VIEW]
AS
SELECT DISTINCT
[LAB_RESULTS].ORDER_ID as 'order number',
labtests.TestId as 'Test Id',
labtests.TestName as 'Test Name'
,NORMAL_RESULT as 'Normal'
,cast(LAB_RESULTS.APPROVED_DATE as date) as 'Report Date'
,CASE WHEN coalesce([RESULT_NUMBER],'') <> '' THEN RESULT_NUMBER WHEN coalesce(RESULT_REPORT, '') <> '' THEN RESULT_REPORT END AS Result
,[RESULT_NOTE] as 'Notes'
,TestsRanges.LowerLimit as 'Low Range'
,TestsRanges.UpperLimit as 'High Range'
,TestsRanges.panic_value as 'Panic'
,TestsRanges.text_range as 'Text Range'
,machines.machine_name
,LAB_RESULTS.CUSTID as 'Customer No'
,Customers.CustName as 'Customer Name'
,LAB_RESULTS.patient_no as 'Patient No'
,Patients.PATIENT_NAME as 'Patient Name'
,Patients.PCfileNo as 'Clinic File No'
,patientcat.CatName as 'Category'
,Patients.Age AS 'AGE'
,gender.gendername as 'SEX'
,labtests.TestNotes as 'Test Note'
,TestsUnits.UnitName as 'UNIT'
,LAB_RESULTS.deptid AS 'DEPTID'
,cast(Lab_Hematology_Samples.COLLECTION_DATE as date) as 'Collection Date'
,cast(Lab_Hematology_Samples.RECEIVING_DATE as date) as 'Receiving Date'
,Groups.groupdesc as 'Group Name'
,LAB_RESULTS.SERIAL
,LAB_RESULTS.GROUPID
,LAB_RESULTS.packageid
,LAB_RESULTS.EXAMINED_BY
,LAB_RESULTS.APPROVED_BY
,UPDATED_BY
,UPDATED_DATE
,Lab_Result_Comments.comments as 'Comments'
,Departments.Dept_name as 'department name'
FROM [dbo].[LAB_RESULTS]
inner join LabTests on LabTests.testid=LAB_RESULTS.TESTID
inner join TestsRanges on LAB_RESULTS.TESTID=TestsRanges.TestId
inner join Departments on LAB_RESULTS.deptid=Departments.Dept_id
inner join PatientCat on patientcat.CatId = TestsRanges.CatId
inner join Customers on Customers.CustId=LAB_RESULTS.CUSTID
inner join patients on Patients.Patient_No = LAB_RESULTS.patient_no
inner join machines on lab_results.machine_id = machines.machine_id
inner join gender on gender.genderid = Patients.Gender
inner join TestsUnits on TestsUnits.UnitId = LabTests.UnitId
inner join Lab_Orders on Lab_Orders.ORDER_ID = LAB_RESULTS.ORDER_ID
left join Lab_Result_Comments on LAB_RESULTS.ORDER_ID = Lab_Result_Comments.ORDER_ID
inner join Lab_Hematology_Samples on Lab_Hematology_Samples.SAMPLE_ID = LAB_RESULTS.SAMPLE_ID
inner join Groups on (Groups.groupid = LAB_RESULTS.GROUPID and Groups.Testid = LAB_RESULTS.TESTID )
where (Lab_Orders.catid = TestsRanges.CatId or PatientCat.CatId =5)
and LAB_RESULTS.EXAMINED_DATE is not null
and LAB_RESULTS.APPROVED_DATE is not null
and LAB_RESULTS.SAMPLE_STATUS=6
and (Patients.Gender = TestsRanges.PatientSex or TestsRanges.PatientSex = 1 )
AND TestsRanges.machine_id = LAB_RESULTS.machine_id
-- and LAB_RESULTS.update_count in (select max(update_count) from LAB_RESULTS where SAMPLE_STATUS = 6 and deptid = @deptid and ORDER_ID = @ORDER_ID)
AND LAB_RESULTS.DEPTID IN (1,2,3,4)
UNION ALL
SELECT DISTINCT [LAB_RESULTS].ORDER_ID as 'order number'
,labtests.TestId as 'Test Id'
,labtests.TestName as 'Test Name'
,NORMAL_RESULT as 'Normal'
,cast(APPROVED_DATE as date) as 'Report Date'
,CASE WHEN coalesce([RESULT_NUMBER],'') <> '' THEN RESULT_NUMBER WHEN coalesce(RESULT_REPORT, '') <> '' THEN RESULT_REPORT END AS Result
,[RESULT_NOTE] as 'Notes'
,TestsRanges.LowerLimit as 'Low Range'
,TestsRanges.UpperLimit as 'High Range'
,TestsRanges.panic_value as 'Panic'
,TestsRanges.text_range as 'Text Range'
,machines.machine_name
,LAB_RESULTS.CUSTID as 'Customer No'
,Customers.CustName as 'Customer Name'
,LAB_RESULTS.patient_no as 'Patient No'
,Patients.PATIENT_NAME as 'Patient Name'
,Patients.PCfileNo as 'Clinic File No'
,patientcat.CatName as 'Category'
,Patients.Age AS 'AGE'
,gender.gendername as 'SEX'
,labtests.TestNotes as 'Test Note'
,TestsUnits.UnitName as 'UNIT'
,LAB_RESULTS.deptid AS 'DEPTID'
,cast(Lab_Hematology_Samples.COLLECTION_DATE as date) as 'Collection Date'
,cast(Lab_Hematology_Samples.RECEIVING_DATE as date)as 'Receiving Date'
,NULL AS 'Group Name'
,LAB_RESULTS.SERIAL
,LAB_RESULTS.GROUPID
,LAB_RESULTS.packageid
,LAB_RESULTS.EXAMINED_BY
,LAB_RESULTS.APPROVED_BY
,UPDATED_BY
,UPDATED_DATE
,Lab_Result_Comments.comments as 'Comments'
,Departments.Dept_name as 'department name'
FROM [dbo].[LAB_RESULTS]
inner join LabTests on LabTests.testid=LAB_RESULTS.TESTID
inner join TestsRanges on TestsRanges.TestId = LAB_RESULTS.TESTID
inner join Departments on LAB_RESULTS.deptid=Departments.Dept_id
inner join PatientCat on patientcat.CatId = TestsRanges.CatId
inner join Customers on Customers.CustId=LAB_RESULTS.CUSTID
inner join machines on lab_results.machine_id = machines.machine_id
inner join patients on Patients.Patient_No = LAB_RESULTS.patient_no
inner join gender on gender.genderid = Patients.Gender
inner join TestsUnits on TestsUnits.UnitId = LabTests.UnitId
left join Lab_Result_Comments on LAB_RESULTS.ORDER_ID = Lab_Result_Comments.ORDER_ID
inner join Lab_Orders on Lab_Orders.ORDER_ID = LAB_RESULTS.ORDER_ID
inner join Lab_Hematology_Samples on Lab_Hematology_Samples.SAMPLE_ID = LAB_RESULTS.SAMPLE_ID
where (Lab_Orders.catid = TestsRanges.CatId or PatientCat.CatId =5)
and LAB_RESULTS.EXAMINED_DATE is not null
and LAB_RESULTS.APPROVED_DATE is not null
and LAB_RESULTS.SAMPLE_STATUS=6
and (Patients.Gender = TestsRanges.PatientSex or TestsRanges.PatientSex = 1 )
and LAB_RESULTS.GROUPID = 0
-- and LAB_RESULTS.update_count in (select max(update_count) from LAB_RESULTS where SAMPLE_STATUS = 6 and deptid = @deptid and ORDER_ID = @ORDER_ID)
-- and LAB_RESULTS.deptid = @deptid
AND TestsRanges.machine_id = LAB_RESULTS.machine_id
AND LAB_RESULTS.DEPTID IN (1,2,3,4)
GO
这是我的日期字段更新为仅选择日期部分并在正确的 SQL SERVER 中工作:
cast(APPROVED_DATE as date) as 'Report Date'
,cast(Lab_Hematology_Samples.COLLECTION_DATE as date) as 'Collection Date'
,cast(Lab_Hematology_Samples.RECEIVING_DATE as date)as 'Receiving Date'
这是模型详细信息:
public partial class LAB_RESULTS_CLINIC_VIEW
{
public int order_number { get; set; }
public int Test_Id { get; set; }
public string Test_Name { get; set; }
public string Normal { get; set; }
public Nullable<System.DateTime> Report_Date { get; set; }
public string Result { get; set; }
public string Notes { get; set; }
public string Low_Range { get; set; }
public string High_Range { get; set; }
public string Panic { get; set; }
public string Text_Range { get; set; }
public string machine_name { get; set; }
public Nullable<int> Customer_No { get; set; }
public string Customer_Name { get; set; }
public Nullable<int> Patient_No { get; set; }
public string Patient_Name { get; set; }
public string Clinic_File_No { get; set; }
public string Category { get; set; }
public Nullable<int> AGE { get; set; }
public string SEX { get; set; }
public string Test_Note { get; set; }
public string UNIT { get; set; }
public Nullable<int> DEPTID { get; set; }
public Nullable<System.DateTime> Collection_Date { get; set; }
public Nullable<System.DateTime> Receiving_Date { get; set; }
public string Group_Name { get; set; }
public Nullable<int> SERIAL { get; set; }
public int GROUPID { get; set; }
public Nullable<int> packageid { get; set; }
public string EXAMINED_BY { get; set; }
public string APPROVED_BY { get; set; }
public string UPDATED_BY { get; set; }
public Nullable<System.DateTime> UPDATED_DATE { get; set; }
public string Comments { get; set; }
public string department_name { get; set; }
}
}
这是查看浏览器,您看到收款日期、收款日期和报告日期出现日期+时间:
【问题讨论】:
-
虽然您可以在 SQL Server 中拥有一个 只有 日期部分(没有时间)的
DATE,但没有 没有等价物在 .NET 中 - C# 数据类型DateTime将始终 有一个时间部分 -00:00:00如果数据库中的值是DATE,但仍然如此。如果您不希望这样,您需要在网格中更改输出格式以仅显示日期部分 -
@marc_s 是的,我只需要没有时间的日期我将如何将其从视图和站点中删除?怎么办?
-
在视图中,一切就绪 -
CAST(... AS DATE)做到了。正如我所说,在 .NET 中 - 您不能“删除”时间部分 - 它始终存在。但是您正在使用的 grid 应该允许您指定如何呈现DateTime并且应该允许一种格式仅显示DateTime的日期部分价值。但我不知道您使用的是什么网格以及如何在您的网格中执行此操作 ---> 阅读文档 为您的网格!
标签: asp.net-mvc