如何用SQL将基于特定日期计数的整数转换为日期?
SQL整数天数转日期的实现方法
结论:不能用
DATEPART()或GETDATE()直接实现这个转换,原因如下:DATEPART()的作用是从日期中提取特定部分(比如年、月、日),比如DATEPART(day, '2015-03-01')会返回1,它不具备日期加减的计算能力。GETDATE()是获取当前系统的日期时间,和你指定的起始日03/01/2015没有直接关联,没法用来基于固定起始日计算目标日期。
正确实现用
DATEADD()函数,这是SQL专门用于日期增减的工具:- 语法:
DATEADD(datepart, number, date),这里我们指定day为日期部分,把天数加到起始日期上即可。 - 对应你给出的例子,具体SQL语句如下:
- 天数为5时:
SELECT DATEADD(day, 5, '2015-03-01') AS Expected;→ 返回2015-03-06 - 天数为0时:
SELECT DATEADD(day, 0, '2015-03-01') AS Expected;→ 返回2015-03-01 - 天数为-13时:
SELECT DATEADD(day, -13, '2015-03-01') AS Expected;→ 返回2015-02-16
- 天数为5时:
- 语法:
如果天数是表中的列(假设表名为
your_table,列名为Days),可以批量查询:SELECT Days, DATEADD(day, Days, '2015-03-01') AS Expected FROM your_table;
内容的提问来源于stack exchange,提问作者kimmstr
相关产品推荐
相关产品推荐

