Sql 四舍五入日期至每月第一天
我使用的是SQL Server 2014,我使用的是我的一个表中的一列,其中列出了到达日期 其格式如下:Sql 四舍五入日期至每月第一天,sql,sql-server,tsql,date,sql-server-2014,Sql,Sql Server,Tsql,Date,Sql Server 2014,我使用的是SQL Server 2014,我使用的是我的一个表中的一列,其中列出了到达日期 其格式如下: ArrivalDate 2015-10-17 00:00:00.000 2015-12-03 00:00:00.000 我正在编写一个查询,该查询将从上表中提取数据,包括ArrivalDate列。但是,我需要将日期转换为各自月份的第一天 换句话说,我的查询应该输出上述示例,如下所示: 2015-10-01 00:00:00.000 2015-12-01 00:00:00.000 我需要它
ArrivalDate
2015-10-17 00:00:00.000
2015-12-03 00:00:00.000
我正在编写一个查询,该查询将从上表中提取数据,包括ArrivalDate列。但是,我需要将日期转换为各自月份的第一天
换句话说,我的查询应该输出上述示例,如下所示:
2015-10-01 00:00:00.000
2015-12-01 00:00:00.000
我需要它,以便在PowerPivot模型中创建与日期表的关系
我尝试过这种语法,但它不符合我的要求:
CONVERT(CHAR(4),[ArrivalDate], 100) + CONVERT(CHAR(4), [ArrivalDate], 120) AS [MTH2]
例如,如果是给定月份的第15天,则减去14并将结果转换为当前日期:
SELECT ArrivalDate
, CAST(DATEADD(DAY, -DATEPART(DAY, ArrivalDate) + 1, ArrivalDate) AS DATE) AS FirstDay
FROM (VALUES
(CURRENT_TIMESTAMP)
) AS t(ArrivalDate)
ArrivalDate |第一天
2019-05-15 09:35:12.050 | 2019-05-01
但我最喜欢的是需要SQL Server 2012的:
SELECT ArrivalDate
, DATEADD(DAY, 1, EOMONTH(ArrivalDate, -1)) AS FirstDay
FROM (VALUES
(CURRENT_TIMESTAMP)
) AS t(ArrivalDate)
ArrivalDate |第一天
2019-05-15 09:35:52.657 | 2019-05-01
使用设置日期格式
DECLARE @date DATETIME = '2015-10-17 00:00:00.000'
SELECT FORMAT(@date, 'yyyy-MM-01 HH:mm:ss.fff')
或者,如果您不想兼职:
SELECT FORMAT(@date, 'yyyy-MM-01 00:00:00.000')
将日期舍入到月初:
DATEADD(MONTH, DATEDIFF(MONTH, 0, DateColumn), 0)
从SQL Server 2012开始,您还可以使用:
或者简单地使用ROUND函数- 选择四舍五入(截止日期('2000年10月27日'),'YEAR') “新年”来自双重 新年
01-JAN-01该列实际上是一个
datetime
字段,还是存储在varchar
的一些变体中?它是一个datetime字段。在这种情况下,它没有“格式”。你真的在问我需要对日期做一些算术运算才能找到给定日期的月初。这正是我需要的!完美的谢谢你,先生!干得好!非常感谢。使用MySQL:DATE\u格式(@DATE,%Y-%m-01')
对于SQL Server问题,这看起来有点像Oraclish
SELECT DATEFROMPARTS(YEAR(ArrivalDate), MONTH(ArrivalDate), 1)
FROM my_table