5

我在返回当前月份和年份的特定日期时遇到问题。我需要例如第 15 天。到目前为止,我在 FB/IB 中使用了现有功能:

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

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

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

4

7 回答 7

8

对于当月的第 15 天:

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

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

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

答案(3 月 11 日,当我针对更改的要求更新此答案时):

-----
41348
于 2013-02-28T18:26:42.603 回答
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)
于 2013-02-28T18:09:10.177 回答
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 的回答和您对整数转换的需要

于 2014-01-02T20:59:21.300 回答
1

获取当天的第 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
于 2018-05-17T05:19:35.827 回答
0

Current_Date在 SQL Server 中将是getdate().

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

select datediff(day, '18991230', dateadd(day, -day(getdate()) + 15, getdate()))
于 2013-02-28T18:12:16.560 回答
0

不知道你是在之后Day还是Date。这为任何文化提供了 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

小提琴演示在这里

| SPECIFICDATE | DAYOFWEEK |
----------------------------
|   2013-02-15 |    Friday |
于 2013-02-28T19:43:58.367 回答
0

更直接的方法:

CAST(FORMAT(GETDATE(), 'yyyy-MM-15') AS DateTime)
于 2021-06-30T19:20:30.090 回答