C# 如何从表单加载的存储日期起30天内更新SQL Server中的列?

C# 如何从表单加载的存储日期起30天内更新SQL Server中的列?,c#,sql,sql-server,C#,Sql,Sql Server,我想获取createDate为30天的行,并将位值IsExpired更改为1。我如何做到这一点 以下是我尝试过的查询: UPDATE [mydb].[dbo].[mytable] SET IsExpired = 1 WHERE CreateDate > (time, SYSDATETIME(GETDATE(CreateDate)+30)) CreateDate列中存储了来自C项目的datetime字符串。例如,第一行中存储的值为2013-05-29 14:59:48.000。当我在S

我想获取createDate为30天的行,并将位值IsExpired更改为1。我如何做到这一点

以下是我尝试过的查询:

UPDATE [mydb].[dbo].[mytable] 
SET IsExpired = 1 
WHERE CreateDate > (time, SYSDATETIME(GETDATE(CreateDate)+30))
CreateDate列中存储了来自C项目的datetime字符串。例如,第一行中存储的值为2013-05-29 14:59:48.000。当我在SQL中执行它时,我得到一个错误

Msg 102,15级,状态1,第1行 “,”附近的语法不正确


试着这样做:

UPDATE [mydb].[dbo].[mytable] 
SET IsExpired = 1 
WHERE CreateDate < dateadd(dd, -30, getdate())
请尝试以下查询:

UPDATE [mydb].[dbo].[mytable] SET IsExpired=1 WHERE CreateDate < DATEADD(dd, -30, GETDATE())
此外,这将帮助您了解DATEADD


首先,我假设Skulomania正试图获得30天的CreateDate。后来从斯科特·张伯伦的评论中,我明白了用户的观点

如果CreateDate字段比SQL server的当前日期早30天,则以下内容应匹配。如果以UTC存储时间,则可能需要使用GETUTCDATE

UPDATE [mydb].[dbo].[mytable] SET IsExpired=1 
    WHERE CreateDate < DATEADD(DAY, -30, GETDATE())
您可以尝试:

UPDATE [mydb].[dbo].[mytable] 
SET IsExpired=1 
WHERE CreateDate = DATEADD(MONTH, -1, GETDATE())

这是SQL还是C.NET。这看起来像SQL。这个问题是什么是时间,XXXif它的sql try UPDATE[mydb].[dbo].[mytable]SET IsExpired=1,其中CreateDate>dateadddd,30,GetDate我正在SQLServer中测试一个查询,我想在Ci中使用该查询得到0行,这是否因为IsExpired是位数据类型?我应该用int来代替吗?我的错。。。它需要返回30天。我得到0行受影响的数据。这是因为IsExpired是位数据类型吗?我应该用int来代替吗?你是在和它自己比较,那些CreateDates中的一个应该是GetDate吗?@ScottChamberlain我以为Skulomania是在和CreateDate比较-从CreateDate开始的30天。我想Skulomania不知道他在做什么,并且猜测了该做什么,这个猜测是错误的,他来这里是为了找到正确的方法。使用让我觉得他真的只是想使用带有DateAdd的GetDate,如果你逻辑地逐步执行你给他的代码,你刚才说的1=1,CreateDate不为null,因为一个日期减去30天将始终小于原始日期,除非它为null@ScottChamberlain感谢您对这个问题的见解。