【问题标题】:Sql server 2005 date functionsql server 2005日期函数
【发布时间】:2010-11-12 22:57:34
【问题描述】:

我想知道如何拒绝。使用 getdate() 的天数 & 其他表中的现有日期,该表包含多条记录,即我想 了解 5 天前或 10 天前或 15 天前发布的工作。我已经写了 查询喜欢

declare @q1 datetime;
select cdate from jobposting where cdate like (select cdate)
select datediff ( dd, q1, getdate())

其中 q1 必须将所有日期存储在职位发布表中,但我无法得到正确答案。

或者我也试过了

select datediff ( dd, select cdate from jobposting, getdate())

提前感谢你。

【问题讨论】:

    标签: sql-server-2005 tsql date


    【解决方案1】:

    如果我正确理解您的问题,有两种常见的方法可以实现您的要求:

    首先,按照 Kim 的建议使用 datediff()。

    另一种是算出5天前的日期,然后将表中的日期与之比较(如果列有索引,应该比DateDiff快):

    declare @cutoff datetime;
    set @cutoff = dateadd(day, -5, getdate());
    select * from jobposting where cdate >= @cutoff;
    

    【讨论】:

    • 是的,这可能更好——首先计算最旧的日期,然后依靠索引来获取相关匹配。 +1。
    【解决方案2】:

    这应该可以,假设 5 天。可以要求 @days 作为存储过程的参数以使其灵活:

    DECLARE @days int
    SET @days = 5
    
    SELECT cdate
    FROM jobposting
    WHERE datediff(d, cdate, getdate()) <= @days
    

    【讨论】:

    • +1:我认为这个答案正确地回答了这个问题以及我将如何编码。
    【解决方案3】:

    您的问题并不完全清楚,但这应该会返回 cdate 为 5 天或 更年轻 的所有招聘信息行。

    SELECT *
    FROM jobposting
    WHERE DATEDIFF(dd, cdate, GETDATE()) >= 5
    

    【讨论】:

    • 这将获得 5 天或更早的所有内容。我承认这个问题有点模棱两可,尽管关于 Lakshmi 想要返回 5 天的哪一边:)
    • @Matt:啊,我很确定我做对了 :) 已编辑,谢谢!
    猜你喜欢
    • 2014-08-29
    • 2011-11-17
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2011-09-06
    • 1970-01-01
    相关资源
    最近更新 更多