比较日期时出错

本文关键字:出错 日期 比较 | 更新日期: 2023-09-27 18:03:21

我有一个名为ReceivingdateNVARCHAR列。我想将其内容与当前时间进行比较,但是当我调用WHERE (Receivingdate < Getdate())时,我得到以下错误:

将nvarchar转换为datetime导致值超出范围

我在c#中使用以下调用插入数据:

DateTime.Now.AddDays(ces).ToString("dd/MM/yyyy");

我不知道我做错了什么。

比较日期时出错

你做错的是在NVARCHAR列中存储日期。请不要再那样做了。修复表并使该列使用DATE数据类型。该错误是由垃圾数据进入表引起的。使用

查找这些行
SELECT Receivingdate FROM dbo.YourTable 
  WHERE ISDATE(ReceivingDate) = 0;

现在,在修复数据类型之前,您需要更正或删除它们。然后:

ALTER TABLE dbo.YourTable 
  ALTER COLUMN ReceivingDate DATE;

接下来,在插入时停止转换为区域字符串格式。只需从c#中插入DateTime值,而根本不调用.ToString()。除了在想要显示日期的时候,绝对没有理由将日期转换为字符串再转换回来。

您的错误是您试图将字符串与日期进行比较。日期是数字。唯一需要担心格式的时候是在显示它们的时候。

对于目前所显示的内容,将c#代码从

更改为
DateTime.Now.AddDays(ces).ToString("dd/MM/yyyy");

 DateTime.Today;

你应该没事