【问题标题】:What is the correct syntax for working with Dates in DB2?在 DB2 中使用日期的正确语法是什么?
【发布时间】:2020-04-07 13:08:55
【问题描述】:

我正在编写一个可用于多种数据库类型的 SQL 语句。 我以前从未使用过 DB2,并且不确定使用日期的语法。 日期存储为日期类型。 这是针对 SQL Server 数据库的语句的 sn-p: SELECT * from tbl1 where YEAR(Start_Time) = YEAR(GetDate() -365)

我认为 DB2 中的等价物是: SELECT * from tbl1 where YEAR(Start_Time) = YEAR(current_date -365 days)

很遗憾,我的家庭办公室没有 DB2 环境(感谢 COVID-19)

【问题讨论】:

  • @data_henrik Db2 fiddle 似乎离线了。
  • DB2 LUW 开发许可证存在,并且有官方的 docker 镜像,我相信。除此之外,像往常一样,SOME_FUNCTION(column) 将忽略基本上任何 RDBMS 中的索引 - 首选执行常规范围查询(具有独占上限!):WHERE start_time >= :this_year_january_first - 1 YEAR AND start_time < :this_year_january_first。请记住,年份并不都是 365 天 - 您确定要几天而不是年份吗?

标签: date db2


【解决方案1】:

Datetime operations and durations

SELECT Start_Time
FROM
(
VALUES 
  CURRENT TIMESTAMP - 365 DAYS - 1 HOUR - 1 MINUTE - 1 SECOND - 1 MICROSECOND
, CURRENT TIMESTAMP - 365 DAYS
) tbl1 (Start_Time) 
WHERE YEAR(Start_Time) = YEAR(CURRENT TIMESTAMP - 365 DAYS);

结果是:

|START_TIME                |
|--------------------------|
|2019-04-08-15.17.17.613999|
|2019-04-08-16.18.18.614000|

【讨论】:

  • 31/12 的闰年很有趣 :-) 减去 1 年是另一种选择:YEAR(CURRENT TIMESTAMP - 1 YEAR)
猜你喜欢
  • 2023-03-14
  • 2013-11-21
  • 2020-09-23
  • 1970-01-01
  • 2022-12-11
  • 1970-01-01
  • 2022-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多