【问题标题】:How to replace current timestamp in SQL query如何在 SQL 查询中替换当前时间戳
【发布时间】:2019-03-19 20:01:25
【问题描述】:

这是我的 SQL 查询,我正在尝试将当前时间戳替换为过去的日期,例如CURRENT_TIMESTAMP 到 16-03-2019 这个日期并查看输出。

SELECT 
    p.ID, s.ID, p.SCREENCODE, p.SUBJECTCODE, s.SITECODE, 
    s.NAME, p.SUBJECT_PROTOCOL_NUMBER, 
    TO_CHAR(to_timestamp_tz(p.D_TOFMORETHAN3UBM_S, 'YYYY-MM-DD"T"HH24:MI:SSTZH:TZM'), 'DD-MON-YYYY HH24:MI')
FROM 
    PATIENT p, SITE s
WHERE 
    p.SITE = s.ID AND
    (p.VPATIENTSTATUS_PATIENT_STATUS = 1 AND       
     p.V20149_SCRFAILUREACTIVATIONDAT IS NULL)
    AND p.DELETED IS NULL     
    AND ((SELECT COUNT(f.DPG1DP3)
          FROM F20034 F
          WHERE F.PATIENT = p.ID
            AND f.deleted IS NULL
            AND To_Date(f.DPG1DP3,'YYYY-MM-DD') = To_Date(SUBSTR(CURRENT_TIMESTAMP-1,1,10), 'DD-MM-YY')) < 1)
ORDER BY 
    s.SITECODE, p.SUBJECTCODE, p.ID

有人可以帮我解决这个问题吗?因为我在约会时很糟糕:(

【问题讨论】:

  • Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI JOIN 语法-92 SQL 标准(25 多年前),不鼓励使用它
  • 您使用的是什么关系型数据库?请标记它。 SQL 是一种特殊用途的语言,许多供应商(Oracle、DB2、SQL Server、Postgres、MySQL、SQLite 等)使用不同的方言和特定的方法运行。

标签: sql oracle timestamp


【解决方案1】:

如果您尝试专门使用该日期,则可以将其替换为日期文字。所以:

 To_Date(SUBSTR(CURRENT_TIMESTAMP-1,1,10), 'DD-MM-YY')

变成:

date '2019-03-16'

此外,您应该停止将日期/时间值存储为字符数据类型。

【讨论】:

    猜你喜欢
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 2019-03-31
    • 2015-12-09
    • 1970-01-01
    • 2019-12-30
    相关资源
    最近更新 更多