我有一个日期类型的列,其中以这种格式过滤按日期
1.1.2012 10:10:11
我需要创建一个过滤器,会按天,月,年过滤这些值是值。
我已经试过
where like '% 1.1.2012 %'
但这似乎不工作。
我有一个日期类型的列,其中以这种格式过滤按日期
1.1.2012 10:10:11
我需要创建一个过滤器,会按天,月,年过滤这些值是值。
我已经试过
where like '% 1.1.2012 %'
但这似乎不工作。
一种可能性是做这样的事情:
WHERE date_and_time >=to_date('01.01.2012','dd.mm.yyyy') and date_and_time <= to_date('01.01.2012','dd.mm.yyyy');
DATE_AND_TIME是你的日期列的名称。
编辑:这是Oracle
如何进一步简化? – Ben 2012-02-02 11:22:03
@你说得对。我不知何故完全忘记了这一点。它会在to_date('01 .01.2012','dd.mm.yyyy')和to_date('01 .01.2012','dd.mm.yyyy')之间的WHERE date_and_time;' – 2012-02-02 11:30:14
甲骨文不会存储您的日期字段的格式,但你可以to_char
功能格式化输出。例如:
select to_char(date_field,'dd/mm/yyyy hh24:mi:ss')
如果查询没有格式的日期,输出格式将取决于您所使用的工具与您的NLS_DATE参数了。
要在Oracle中过滤日期,您可以使用to_date
函数,该函数接收字符串并以某种特定格式解析日期。你可以看到to_date
here
选项的所有选项来过滤日期字段:
where date_field between to_date('1.1.2012 00:00','d.m.yyyy hh24:mi') and to_date('1.1.2012 23:59','d.m.yyyy hh24:mi')
-- you possibly will lost some performance with this second one
where trunc(date_field) = to_date('1.1.2012','d.m.yyyy')
在MSSQL中,你可以使用最新的功能,这都好办。一种方式是这样的:
where Year (date) = 2012
and Month(date) = 1
and Day (date) = 1
但还有其他解决方案。看看下面的页面的信息: http://msdn.microsoft.com/en-us/library/ms186724.aspx
我最近工作与日期时间值的字符串表示。我建议不要这样做,并且始终与日期一起工作,因为MSSQL-Server的兼容性。
如果使用日期时间值的字符串表示形式,则需要非常小心不同语言设置的格式,而不是使用自己的服务器上的格式。 字符串在其他服务器上可以解释为不同(ISO格式与us格式)。
你已经列出了sql server和oracle你正在使用哪一个? – Taryn 2012-02-02 10:27:04
日期不是varchars(如果您愿意,也可以是字符串)。您可以更改用于显示日期而不更改其值的格式。此外,您正在使用哪种数据库?答案取决于这个信息。 – 2012-02-02 10:29:20
我对这两种解决方案都感兴趣。 – user49126 2012-02-02 10:31:55