2017-08-17 218 views
-3

表的Created_time列的值为25-MAY-2012.10.12.320000 PMSQL时间戳查询

我需要编写一个查询,显示从table XYZ因为它是建筑MarchApril月之间产生的所有字段,不可知的一年中他们都英寸

我想显示记录根据他们的id升序排列。

有人可以帮助我吗?

+0

什么是列CREATED_TIME的数据类型? – JRG

+0

你有什么试过,这不是一个作业网站 – dbajtr

+0

哪个RDBMS是为了这个?请添加一个标签来指定您是使用'mysql','postgresql','sql-server','oracle'还是'db2' - 或者其他的东西。 –

回答

0

查看月份和年份功能。 如果CREATED_TIME是datetime类型:

select * 
from TABLE 
where month(Created_time) in (3, 4) 
+1

对使用​​未知dbms的问题的产品具体答案... – jarlh

0

如果您需要检查Created_time是否在任何一年的三月,那么这个想法是做这样的事情:

select * 
from XYZ 
where Created_time like '%-MARCH-%' 
order by id; 

或者,如果这不适用于您的column类型,然后将其转换为varchar。此外,还有一些RDBMS特定的function可以帮助你,但是为了更全面的回答,我需要知道你正在使用的RDBMS和的Created_time

编辑

正如Jarhl指出,EXTRACT应该使用在这种情况下,检查了一个月。 Source,证明他是正确的说:

名称

EXTRACT

从日期提取零件的ANSI SQL标量函数是 提取物。 ANSI SQL标准语法

ANSI SQL EXTRACT函数采用date_part和 计算为日期时间值的表达式。 MySQL和Oracle和PostgreSQL的支持 ANSI SQL标准语法:

EXTRACT(date_part FROM expression)

+1

根据评论,Created_time数据类型是TIMESTAMP(6)。 – jarlh

+0

@jarlh谢谢你指出。我可能是错的,但我认为Oracle可以提供这样的精确度。在这种情况下,可以使用to_char完成到文本数据的转换。但是,如果我们在Oracle中,那么可以使用EXTRACT获取月份。来源:https://docs.oracle.com/cd/B28359_01/server.111/b28286/functions052.htm#SQLRF00639 –

+1

EXTRACT甚至是在这种情况下使用的ANSI SQL函数!(但问题中指定的时间戳不符合ANSI SQL标准,所以谁知道哪些dbms OP正在使用...) – jarlh