以 yyyy-mm-dd 格式获取上个月的最后一天

Posted

技术标签:

【中文标题】以 yyyy-mm-dd 格式获取上个月的最后一天【英文标题】:Get last day of previous month in yyyy-mm-dd format 【发布时间】:2019-08-27 12:22:06 【问题描述】:

如何以yyyy-mm-dd 格式获取上个月的最后一天?

这是我尝试过的,但我不想显示秒数。仅 YYYY-MM-DD:

SELECT DATEADD(s, -1, DATEADD(mm, DATEDIFF(m, 0, GETDATE()), 0))

【问题讨论】:

日期格式仅在您将其显示为 varchar 数据类型时才可行(日期/日期时间是字节并且没有格式)。只需将您的所有表达式都包含在 CONVERT(VARCHAR(10), <expression>, 120)How to get a date in YYYY-MM-DD format from a TSQL datetime field?的可能重复 可能使用 EOMONTH 是另一种选择 - SELECT CONVERT(varchar(10), EOMONTH(GETDATE(), -1), 23) 【参考方案1】:

EOMONTH 函数与FORMAT 一起使用:

SELECT FORMAT(EOMONTH(CURRENT_TIMESTAMP, -1), 'yyyy-MM-dd')

上例中的-1 表示从参数1 中减去1 个月(不需要DATEADD)。

【讨论】:

【参考方案2】:

将其转换为仅日期格式

SELECT convert(date,DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)),103)

【讨论】:

【参考方案3】:

这应该可以工作

 SELECT CONVERT(VARCHAR(10),  DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)), 120)  

【讨论】:

【参考方案4】:

试试这个流行的:

 SELECT CONVERT(VARCHAR(10),DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)),120)  

Live demo

【讨论】:

【参考方案5】:

试试这个:

Select CONVERT(varchar, DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)),23)

【讨论】:

【参考方案6】:

我会使用它,因为新版本的 SQL 支持它:

SELECT  CONVERT(DATE,EOMONTH(DATEADD(MM,-1,GETDATE())),103)

完成相同任务的代码更短...

【讨论】:

以上是关于以 yyyy-mm-dd 格式获取上个月的最后一天的主要内容,如果未能解决你的问题,请参考以下文章

如何用sql获取上个月的第一天和上个月的最后一天

sql 语句 怎么获取指定月的第一天和最后一天?

oracle sql 最近5个季度的最后一天

nodejs 获取指定月份最后一天

Java中获取去年最后一天的日期

SOA 转换中的 XSLT 映射以获取上个月的最大日期