sql - 从 t-sql select 中的日期比较中获取 bool 值

标签 sql sql-server-2005 tsql datetime compare

我想知道在 ms-sql (2005) 中是否可以实现以下内容

SELECT (expiry < getdate()) AS Expired
FROM MyTable
WHERE (ID = 1)
我基本上想将日期与 bool 值进行比较,这可能在语句的选择部分吗?

最佳答案

不直接。您必须使用 CASE,CAST 意味着它被客户端代码解释为 bool 值

SELECT
    CAST(CASE WHEN expiry < getdate() THEN 1 ELSE 0 END AS bit) AS Expired
FROM
    MyTable WHERE (ID = 1)

另一种需要一行或零行的解决方案:
SELECT
    CAST(COUNT(*) AS bit) AS Expired   
FROM
    MyTable
WHERE
    ID = 1 AND expiry < getdate() 

关于sql - 从 t-sql select 中的日期比较中获取 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1896828/

相关文章:

sql - 比较字符串结尾的最佳方法是使用 RIGHT、LIKE 还是其他?

sql - dplyr 将列粘贴到远程数据库中

mysql - 子查询上的 NHibernate INNER JOIN

sql - 通过 Access 查询从 Access 数据库导入到 Sql Server 时出现问题

sql-server - 在日志传送场景中是否可以使辅助服务器只读?

SQL查询填充0的缺失数据

sql - EXECUTE @Var 字符限制 SQL Server 2008 R2

sql-server - 具有排名函数的递归 cte

C# - SQL - LINQ 查询

mysql - 在 RANK 函数中跳过领带位置