添加一天到日期列dateadd或timedelta

2024-09-27 07:30:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我在SQL Server上有一个datetime列:

Column('LAST_SEEN_DTS', DATETIME(), table=<mytable>)

我想把日期延长一天

这是有关专栏的摘录:

    last_seen_dts
0   2017-06-12 15:36:05.263
1   2017-06-12 21:43:16.407
2   2017-06-13 09:02:59.457
3   2017-06-13 15:36:44.183
4   2017-06-14 03:04:07.010
5   2017-06-14 11:51:40.603
6   2017-06-15 02:53:12.373
7   2017-06-15 11:46:16.560
8   2017-06-16 02:44:12.110
9   2017-06-16 03:19:30.307

我尝试过的一种方法是:

q = select([
    table.c.LAST_SEEN_DTS,
    (func.cast(table.c.LAST_SEEN_DTS, DATE) + timedelta(days=1)).label('date1')
]).distinct().limit(10)

日期增加了一天,但年份也增加了70年:

    date1
0   2087-06-13
1   2087-06-13
2   2087-06-14
3   2087-06-14
4   2087-06-15
5   2087-06-15
6   2087-06-16
7   2087-06-16
8   2087-06-17
9   2087-06-17

我首先尝试使用dateadd函数:

q = select([
    table.c.LAST_SEEN_DTS,
    func.dateadd('day', 1, func.cast(table.c.LAST_SEEN_DTS, DATE)).label('date1')
]).distinct().limit(10)

这不起作用,因为day选项不能指定为字符串。我试着把它当作一个常数,但是sqlalchemysqlalchemy.dialects.mssql似乎都没有

如何在SQL Server上使用SQLAlchemy实现这一点

编辑

我知道我可以直接使用原始SQL,比如text("cast(dateadd(day, 1, LAST_SEEN_DTS) as DATE)"),但这样做首先会破坏使用SQLAlchemy的目的


Tags: sqldateservertableselectlabellastfunc

热门问题