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

Sk1*_*1X1 5 sql t-sql sql-server datetime

我对当前月份和年份的特定日的回归有问题.我需要例如第15天.直到现在我在FB/IB现有功能中使用:

IB_EncodeDate(EXTRACT(YEAR FROM Current_Date),EXTRACT(Month FROM Current_Date),15)
Run Code Online (Sandbox Code Playgroud)

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

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

Aar*_*and 8

本月的第15天:

SELECT DATEADD(DAY, 14, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0));
Run Code Online (Sandbox Code Playgroud)

为了获得基于这个"神奇"日期的愚蠢的OLE表示,1899-12-30:

SELECT DATEDIFF(DAY, -2, DATEADD(DAY, 14, 
  DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)));
Run Code Online (Sandbox Code Playgroud)

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

-----
41348
Run Code Online (Sandbox Code Playgroud)


Lam*_*mak 3

那么,您有一个日期,并且想要返回同月的 15 日?好吧,假设 SQL Server 2008,您可以这样做:

SELECT CONVERT(DATE,CONVERT(VARCHAR(6),GETDATE(),112)+'15',112)
Run Code Online (Sandbox Code Playgroud)

对于以前版本的 SQL Server:

SELECT CONVERT(DATETIME,CONVERT(VARCHAR(6),GETDATE(),112)+'15',112)
Run Code Online (Sandbox Code Playgroud)

  • @Sk1X1 好吧。因此,建议以后,将日期作为日期数据类型存储在数据库中 (2认同)
  • @Sk1X1 哎呀。日期作为浮动!您是否将工资存储为字符串并将名称存储在 varbinary 中? (2认同)