sql - 在 SQL Server 2008 中创建日期

标签 sql sql-server sql-server-2008 date calculated-columns

有没有类似的东西DATEFROMPARTS(year, month, day)在 SQL Server 2008 中?我想使用当前的年份和月份创建一个日期,但我自己的月份。这需要在一行中完成,以便在计算列公式中使用。

例如(我不确定它是否有效,因为我没有 SQL Server 2012):

DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 3)

有没有办法在 SQL Server 2008 中做到这一点?

DATEFROMPARTS 似乎仅在 SQL Server 2012 中可用 (link)

最佳答案

使用 3从你的例子中,你可以这样做:

dateadd(dd, 3 -1, dateadd(mm, datediff(mm,0, current_timestamp), 0))

它的工作原理是查找自纪元日期以来的月数,将这些月份添加回纪元日期,然后将所需的天数添加到先前的结果中。这听起来很复杂,但它建立在 Date 之前截断日期的规范方法之上。 (不是 DateTime)类型添加到 Sql Server 2008。

您可能会在这里看到其他建议构建日期字符串的答案。我劝你避免使用字符串的建议 .使用字符串可能会慢得多,并且使用替代日期排序规则/格式存在一些潜在的陷阱。

关于sql - 在 SQL Server 2008 中创建日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19523721/

相关文章:

sql - 在第 2 期与第 1 期购买更多商品的某一类别中的独家客户

java.sql.SQLException : ORA-01843: not a valid month 异常

sql - 测试链接服务器的连接并返回连接的链接服务器

sql-server - 将日期保存到 SQL Server 表

asp.net - 如何跟踪生产环境中偶发的 ASP.NET 性能问题?

php - ORA-06550 必须声明标识符

mysql - 在 mySQL 中,如何为多个表中的每个客户端 ID 选择最新的时间戳?

sql - SQL 中的无序结果

java.sql.SQLException : No suitable driver found for jdbc:sqlserver 异常

c# - 需要用异步数据库请求返回SqlDataReader