Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 提交日期在7点之后_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql 提交日期在7点之后

Sql 提交日期在7点之后,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个表,其中有两列日期状态 Create table Status ( date nvarchar(20), Status bit ) 现在,我想选择状态为false且提交7天后日期的记录,比如今天我插入了两条状态为false的记录,因此我希望查询显示2015年4月8日7天后的记录。状态为false的2015年4月1日的所有记录都应显示出来 如果你理解我的问题;请告诉我们该怎么做。正如@gvee在上面的评论中所说,您应该将日期存储为日期或日期时间字段。这将允许您这样查询:

我有一个表,其中有两列日期状态

Create table Status
(
    date nvarchar(20),
    Status bit
)
现在,我想选择状态为false且提交7天后日期的记录,比如今天我插入了两条状态为false的记录,因此我希望查询显示2015年4月8日7天后的记录。状态为false的2015年4月1日的所有记录都应显示出来


如果你理解我的问题;请告诉我们该怎么做。

正如@gvee在上面的评论中所说,您应该将日期存储为
日期
日期时间
字段。这将允许您这样查询:

SELECT [date], [status]
FROM <yourtable>
WHERE [date] <= DATEADD(d, -7, GETDATE())
AND [status] = 0
如果绝对必须将列保持为
NVARCHAR
数据类型,使用您提供的日期格式,您可以
将其转换为
日期时间
,如下所示:

CONVERT(DATETIME, [date], 105)
因此,您的
WHERE
子句如下所示:

WHERE DATEDIFF(d, [date], GETDATE()) >= 7
AND [status] = 0
WHERE DATEDIFF(d, CONVERT(DATETIME, [date], 105), GETDATE()) >= 7
AND [status] = 0
  • 根据您的情况,您应该使用适当的数据类型存储数据,如
    DATE
    DATETIME

  • 您可以使用
    DATEDIFF()
    以天/周/小时等为单位查找两个日期之间的差异:

    SELECT *
    FROM YourTable
    WHERE [status] = 0
       AND DATEDIFF(day,YourDate,GETDATE()) >=7
    
  • 如果绝对无法修复数据结构,则必须在每次使用字符串日期时添加
    CAST()
    CONVERT()

    CAST(YourDate AS DATETIME)
    

    您需要将日期存储为日期,而不是字符串。-您应该始终使用最合适的数据类型——毕竟,这就是它们的用途!怎么投?我的日期如下:1-04-2015
    CONVERT(DATETIME,[date],105)
    我将添加到答案中。如果您已经解决了问题,请确保将您的问题标记为已回答。我强烈建议使用
    DATETIME
    DATE
    格式,这将使您在将来处理日期时具有更大的灵活性。好的,我将在将来使用date或datetime谢谢againI想问一下,何时将数据类型设置为日期格式,然后在我的应用程序中插入d-MM-yyyy格式的日期,但sql显示的格式类似于yyyy-MM-dd。我有这样的更改cmd.Parameters.AddWithValue(“@Request\u Issue\u date”,sv.RequestIssue.ToString(“d-MM-yyyy”);但这给了我一个错误:将数据类型nvarchar转换为date时出错