Informix SQL:如何在查询中获取日期时间字段的日期部分?

时间:2010-11-14 15:34:27

标签: sql date datetime informix

在查询中仅使用日期时间字段的日期部分的最佳方法是什么? 我有一个日期时间字段,并希望按日期对其进行分组/计数。

4 个答案:

答案 0 :(得分:17)

有很多方法可以做到:

EXTEND(dt_field, YEAR TO DAY)
CAST(dt_field AS DATETIME YEAR TO DAY)
dt_field::DATETIME YEAR TO DAY
CAST(dt_field AS DATE)
dt_field::DATE
DATE(dt_field)

最简单的 - 最短的 - 是最后两个,函数符号可能是最清晰的。前三个给你一个DATETIME值;最后三个给你一个DATE值。这些是相似的,但不完全相同。它们可以相当自由地互换。

答案 1 :(得分:5)

date(name_of_field)

答案 2 :(得分:3)

to_char(dt_field, "%d %B %Y")

给出31 May 2016

分组:

SELECT YEAR(dt_field) year, MONTH(dt_field) month, COUNT(*) count
FROM tblName
GROUP BY 1, 2
ORDER BY 1, 2;

答案 3 :(得分:0)

只需添加到这些...

我一直在寻找某种方法来提取Informix中日期和时间的一部分,并发现它们,以防万一它们对任何人都有用,它们都放在一个地方。

为文字...

  • TO_CHAR(<value>, "%H")小时(00-23)
  • TO_CHAR(<value>, "%M")分钟(00-59)
  • TO_CHAR(<value>, "%S")秒(00-61)

Further TO_CHAR codes...

  • %a缩写的工作日名称,在语言环境中定义
  • %b缩写的月份名称,在语言环境中定义
  • %C世纪数字(年份除以100并被截断为整数)作为整数(00到99)
  • %D与%m /%d /%y格式相同
  • %e一个月中的第几天(1到31)。一位数字值后有一个空格。
  • %Fn的秒数的值,精度由无符号整数n指定。 n的默认值为2;默认值为2。 n的范围是0≤n≤5。此值将覆盖%和F字符之间指定的任何宽度或精度。
  • %h与%b格式相同:缩写的月份名称,在语言环境中定义
  • %H小时,为2位整数(00到23)(24小时制)
  • %I小时,为2位整数(00到11)(12小时制)
  • %m月(整数)(01到12)。任何一位数字值前都有零(0)。
  • %M分钟为2位整数(00到59)
  • %S秒,为2位整数(00到61)。第二个值最多可以为61(而不是59),以允许偶尔的leap秒和双leap秒。
  • %T时间以%H:%M:%S格式
  • %w工作日为数字(0到6); 0表示星期日的区域设置。
  • %y以两位十进制数字表示的年份。

作为整数...

  • DAY(<value>)每月的某天(最多0个月)
  • MONTH(<value>)月份(1-12)
  • YEAR(<value>)年号