当前月份和年份的特定日期

时间:2013-02-28 17:54:47

标签: sql sql-server tsql datetime

关于当月和当年的特定日的回归有问题。我需要例如第15天。到现在为止我在FB / IB现有功能中使用了:

IB_EncodeDate(EXTRACT(YEAR FROM Current_Date),EXTRACT(Month FROM Current_Date),15)

是否存在将此转换为MSSQL数据库的简单方法?

修改。我需要以OLE格式输出(例如41,348)来将日期与另一个日期进行比较。我将数据库中的日期与当月的第15天进行比较。

7 个答案:

答案 0 :(得分:7)

本月的第15天:

SELECT DATEADD(DAY, 14, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0));

根据这个“神奇”日期获取愚蠢的OLE表示,1899-12-30:

SELECT DATEDIFF(DAY, -2, DATEADD(DAY, 14, 
  DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)));

回答(3月11日,当我更新此答案以了解更改后的要求时):

-----
41348

答案 1 :(得分:3)

那么,你有一个约会,想要回到同月的第15天吗?好吧,假设SQL Server 2008,你可以这样做:

SELECT CONVERT(DATE,CONVERT(VARCHAR(6),GETDATE(),112)+'15',112)

对于早期版本的SQL Server:

SELECT CONVERT(DATETIME,CONVERT(VARCHAR(6),GETDATE(),112)+'15',112)

答案 2 :(得分:1)

这似乎是一个快速的答案。

declare @OLEDate int 
declare @currentDate as datetime
set @currentDate = DATEADD(DAY, 14, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0))
set @OLEDate = convert(float, @currentdate) 
-- PRINT @OLEDate 

基于Aaron Bertrand的答案以及您对整数转换的需求

答案 3 :(得分:0)

SQL Server中的

Current_Dategetdate()

要以OLE自动化格式获取第15天,请尝试:

select datediff(day, '18991230', dateadd(day, -day(getdate()) + 15, getdate()))

答案 4 :(得分:0)

不确定您是否在DayDate之后。这为任何文化提供了dayOfWeek和specificDate

declare @myDay int = 15

select convert(date,myday) specificDate, datename(dw,myday) dayOfWeek
from (
   select convert(varchar(6),getdate(),112) + convert(varchar, @myDay) myday
) x

<强> Fiddle Demo Here

| SPECIFICDATE | DAYOFWEEK |
----------------------------
|   2013-02-15 |    Friday |

答案 5 :(得分:0)

获得当天的第10天

declare @cur_month int,@cur_yr int,@tenth_dt date
    set @cur_month=month(getdate())
    set @cur_yr=YEAR(getdate())
    set @tenth_dt=convert(date,'10/'+convert(varchar(5),@cur_month)+'/'+convert(varchar(5),@cur_yr),103)
    select @tenth_dt

答案 6 :(得分:0)

更直接的方法:

CAST(FORMAT(GETDATE(), 'yyyy-MM-15') AS DateTime)