如何获得代表一个月第一天的日期?

时间:2010-08-17 14:51:17

标签: sql sql-server datetime date

我需要一个脚本中的功能,使我能够在表格中插入日期。

我需要什么SQL来插入格式的日期

01/08/2010 00:00:00

其中日期是当月的第一天。我需要更改订单才能指定月份值?感谢

14 个答案:

答案 0 :(得分:77)

最好和最简单的方法是使用:

SELECT DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0)

只需用您需要的日期替换GETDATE()。

答案 1 :(得分:8)

接受的答案有效,可能更快,但SQL 2012及更高版本的方法更容易理解:

SELECT cast(format(GETDATE(), 'yyyy-MM-01') as Date)

答案 2 :(得分:3)

select cast(cast(datepart(year,getdate()) as char(4)) 
+ '/' 
+ cast(datepart(month,getdate()) as char(2))
+ '/01' as datetime)

答案 3 :(得分:2)

这是一种非常简单的方法(使用SQL 2012或更高版本)

datefromparts(year(getdate()),month(getdate()),1)

您还可以使用

轻松获取当月的最后一天
eomonth(getdate())

答案 4 :(得分:1)

SELECT DATEADD(day,1-DATEpart(day,GETDATE()),GETDATE())

答案 5 :(得分:0)

我认为通常将字符串转换为MM / DD / YY HH:mm:ss,您需要使用08/01/2010 00:00:00

很抱歉,误解了这个问题,看看你是否可以改变字符串的顺序。

这可能是你想要的:

declare @test as date

select @test = CONVERT(date, '01/08/2010 00:00:00', 103)
select convert(varchar(15), @test, 106)

答案 6 :(得分:0)

从此link修改。这将以字符串形式返回,但您可以根据需要进行修改以返回日期时间数据类型。

SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(GetDate())-1),GetDate()),101) 

答案 7 :(得分:0)

SELECT  CAST(FLOOR(CAST(DATEADD(d, 1 - DAY(GETDATE()), GETDATE()) AS FLOAT)) AS DATETIME)

答案 8 :(得分:0)

SELECT DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0)

这完美无缺。我实际上添加了一个Case语句。谢谢你的帖子:

SELECT Case(DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0) as Date)

答案 9 :(得分:-1)

从dual中选择last_day(add_months(sysdate,-1))+ 1;

答案 10 :(得分:-1)

从SQL Server 2012开始,您可以使用eomonth built-in function,该版本用于获取月末,但也可以用于开始:

select dateadd(day, 1, eomonth(<date>, -1))

如果您需要datetime等结果,只需cast

select cast(dateadd(day, 1, eomonth(<date>, -1)) as datetime)

答案 11 :(得分:-1)

获取上个月的第一天

Select ADDDATE(LAST_DAY(ADDDATE(now(), INTERVAL -2 MONTH)), INTERVAL 1 DAY);

获取上个月的最后一天

Select LAST_DAY(ADDDATE(now(), INTERVAL -1 MONTH));

答案 12 :(得分:-2)

...在Powershell中你可以这样做:

获取日期(获取日期((获取日期)) - 格式MM.yyyy)

...上个月这样做:

获取日期(获取日期((获取日期).AddMonths(-1)) - 格式MM.yyyy)

...或自定义日期执行此操作:

获取日期(获取日期((Get-Date 12.01.2013)) - 格式MM.yyyy)

m sure there这样的事情可能......

格鲁斯

答案 13 :(得分:-2)

非常简单的代码片段

$ date - extract(从$ date开始的日期)+ 1

两种方法:

  1. my_date - extract(来自my_date的日期)+ 1

  2. '2014/01/21' - 摘录(日期自'2014/01/21')+ 1