sql - 将日期部分重置为一个月的第一天,同时保留时间

标签 sql oracle

有没有办法在保留时间的同时将日期部分重置为每月的第一天?
例如:

2018-01-02 23:00:00 -> 2018-01-01 23:00:00
2018-04-04 10:00:00 -> 2018-04-01 10:00:00

最佳答案

with x as (
  select to_date( '2018-01-02 23:00:00', 'yyyy-mm-dd hh24:mi:ss') as d from dual
  union all
  select to_date(  '2018-04-04 10:00:00', 'yyyy-mm-dd hh24:mi:ss') from dual
)


SELECT d, d - trunc( d ) + trunc( d, 'MM' )
FROM x;

D                   D-TRUNC(D)+TRUNC(D,
------------------- -------------------
2018-01-02 23:00:00 2018-01-01 23:00:00
2018-04-04 10:00:00 2018-04-01 10:00:00

关于sql - 将日期部分重置为一个月的第一天,同时保留时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49697891/

相关文章:

ruby-on-rails - 在 ubuntu 14.04 x64 上安装 ruby​​-oci8 时出错

python - 在 Django 中获取最近最少租借的电影

mysql - SQL SELECT 中的 IF…THEN 代码

mysql - 一个属性可以同时是pk和fk吗?

oracle - 如何访问 Oracle Apex 中保存组的表?

database - 带游标的 pl/sql varray

mysql - SQL仅选择列上具有最大值的行

python - 在 Python 中读取 SQL 表

mysql - sql 选择移动范围

sql - 解码语句 : strange behaviour