在查询中仅使用日期时间字段的日期部分的最佳方法是什么? 我有一个日期时间字段,并希望按日期对其进行分组/计数。
答案 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)%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>)
年号