比较日期时出错
本文关键字:出错 日期 比较 | 更新日期: 2023-09-27 18:03:21
我有一个名为Receivingdate
的NVARCHAR
列。我想将其内容与当前时间进行比较,但是当我调用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;
你应该没事