MS SQl 11.0给定代码中出现错误:“unix_timestamp”不是可识别的内置函数名
我从另一个开发人员那里得到了SQL查询,并使用了unix_timestamp函数,因为此查询将在确切的时间段内从数据库返回对象列表。查询无法工作,因为SQL错误195:“unix_timestamp”不是可识别的内置函数MS SQl 11.0给定代码中出现错误:“unix_timestamp”不是可识别的内置函数名,sql,sql-server,database,unix-timestamp,Sql,Sql Server,Database,Unix Timestamp,我从另一个开发人员那里得到了SQL查询,并使用了unix_timestamp函数,因为此查询将在确切的时间段内从数据库返回对象列表。查询无法工作,因为SQL错误195:“unix_timestamp”不是可识别的内置函数 n.created>unix_timestamp('2019-02-28') and n.created<unix_timestamp('2019-09-01') unix_timestamp是MySQL上的内置函数-它不在SQLserver上 下面是现在获取un
n.created>unix_timestamp('2019-02-28') and n.created<unix_timestamp('2019-09-01')
unix_timestamp是MySQL上的内置函数-它不在SQLserver上 下面是现在获取unix时间戳的代码: 您可以创建一个用户定义的函数来执行此操作并按原样使用查询,也可以按如下方式修改查询:
n.created>(DATEDIFF(SECOND,'1970-01-01', '2019-02-28')) and n.created<(DATEDIFF(SECOND,'1970-01-01','2019-09-01'))
Unix时间戳在SQL Server中不是特别有用。可以添加计算列以将其转换为日期时间数据类型:
alter table t add created_dt as (dateadd(second, created, '1970-01-01')) persisted;
create index t_created_dt on t(created_dt);
这样,您就可以编写:
n.created_dt > '2019-02-28' and
n.created_dt < '2019-09-01';
否则,motobatsu的解决方案是一个很好的解决方案。那么,有什么解决方案可以在SQL server上激活此代码吗?@lisa抱歉-我提交得太快了,我添加了一些代码,这些代码应该可以让您实现所需的功能。1970年意味着什么?@lisa unix时间戳自1970年1月1日起以秒为单位测量-因此,将该日期传递给SQL的DATEDIFF函数,并要求它提供从那时起到原始查询中的两个日期之间的秒数从本质上讲,闰秒有一些东西,但这不应该是一个问题,希望得到相同的结果
n.created_dt > '2019-02-28' and
n.created_dt < '2019-09-01';