Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 四舍五入日期至每月第一天_Sql_Sql Server_Tsql_Date_Sql Server 2014 - Fatal编程技术网

Sql 四舍五入日期至每月第一天

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 我需要它

我使用的是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
我需要它,以便在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