当前位置: 首页 > 面试题库 >

SQL如何正确设置和使用日期变量值?

贺波
2023-03-14
问题内容

我有以下查询,该查询使用日期变量,该变量在存储过程内部生成:

DECLARE @sp_Date DATETIME
SET @sp_Date = DateAdd(m, -6, GETDATE())

SELECT DISTINCT pat.PublicationID
     FROM PubAdvTransData AS pat 
     INNER JOIN PubAdvertiser AS pa ON pat.AdvTransID = pa.AdvTransID
     WHERE (pat.LastAdDate > @sp_Date) AND (pa.AdvertiserID = 12345))

问题是@sp_Date值似乎被忽略了,我想知道为什么吗?我定义或使用不正确吗?


问题答案:

您的语法很好,它将返回LastAdDate过去6个月内的行;

select cast('01-jan-1970' as datetime) as LastAdDate into #PubAdvTransData 
    union select GETDATE()
    union select NULL
    union select '01-feb-2010'

DECLARE @sp_Date DATETIME = DateAdd(m, -6, GETDATE())

SELECT * FROM #PubAdvTransData pat
     WHERE (pat.LastAdDate > @sp_Date)

>2010-02-01 00:00:00.000
>2010-04-29 21:12:29.920

您确定LastAdDate类型DATETIME吗?



 类似资料:
  • 我有一个预请求脚本,它在每次生成请求时递增一个环境变量以生成不同的ID。此外,我有一个运行程序多次调用此请求: 但是,我注意到在运行期间,环境变量不会更新,至少在环境选项卡中是这样: 但我监控控制台日志中的变量,它正确递增: 我的问题是,如果我在所有请求结束之前过早停止运行程序,环境变量不会注册所有已执行的集合,因此它会保留执行开始时的值。这可能是一个已知的问题,也可能只是我以错误的方式使用工具,

  • 问题内容: 我正在尝试从表中读取数据。该表具有表名列表。 对于数据集的每一行,我想运行几个查询以提取数据并将其插入到临时表中。 这是我所做的 每次我运行此查询时,都会出现此错误 我不知道为什么,因为我在上面的代码中看到了在顶部声明此变量的原因。 取得输出并手动执行。它没有问题,并且该变量将具有应有的datetime值。 问题答案: 您需要使用执行动态查询,可帮助您 变量 演示版

  • 问题内容: 这是一个没有绑定变量的简单工作查询: 哪里是类型。 我应该能够使用绑定变量在上述查询中输入任意天数。 因此,我尝试了以下操作,但似乎不起作用: 我尝试输入数字输入,例如10和‘10’。您在10g上收到 ORA-00933 错误。 问题答案: 原始查询中的字符串是间隔文字,即解析器将其评估为单个值。您不能将其一部分替换为绑定变量。 如果改用,则1是整数文字,您应该可以将其替换为绑定变量。

  • 问题内容: 我正在尝试使用Java在数据库中设置时间戳,但是在我的表中,我得到的只是日期,而没有时间(例如,看起来像“ 2010-09-09 00:00:00”)。 我使用我的mysql数据库中的日期时间字段(因为它似乎是日期时间是比较常见的比时间戳)。我设置日期的代码如下所示: 如何设置日期以包括时间? 编辑: 我按照下面的方法更改了代码,它同时设置了日期和时间。 问题答案: 使用和。仅限日期,

  • 我试图创建一个小应用程序来保存许可证数据,我允许用户输入赎回日期和许可证长度。 我想创建一天的剩余字段,用户可以在其中查看他们在赎回新许可证之前还有多少天。 我用过jxDatepicker 并且有三个组合框,用户可以在其中选择许可证可用的年、月和日数 编辑 我想我让一些人很困惑。或者我不明白这怎么能解决我的问题。我会试着更详细地描述 脚本 用户可以使用该应用程序记录他们的许可证,他们输入许可证兑换

  • 我正试图在java(或一般情况下)中了解线程安全性。我有这个类(我希望符合POJO的定义),它还需要与JPA提供商兼容: 如代码中注释行所述,是否有必要将和定义为,并且块是否按其应有的方式使用?或者我应该只使用块,而不将和定义为?的不应与另一个错误匹配。 这个链接说 对于所有声明为volatile的变量(包括long和double变量),读写都是原子的 我是否应该理解通过setter/getter