以 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 格式获取上个月的最后一天的主要内容,如果未能解决你的问题,请参考以下文章