sql - CASE WHEN 2 日期匹配的 SQL 查询
问题描述
如果这是一个基本问题,SQL
那么很抱歉。希望创建一个表示两个日期匹配的列(即创建记录的日期与记录过期的日期相同)。
我的两个日期变量是格式为 YYYY-MM-DD HH:MM:SS.SSS 的时间戳
输入示例:
|Created | Expiry |
|------------------------|-------------------------|
|2021-01-23 12:34:43.123 | 2021-04-18 15:24:17.432 |
|2021-02-19 10:01:01.231 | 2021-02-19 00:00:00.000 |
我的查询是查找两个日期之间的天数,如果等于 0(即两个日期相同),则将该Same_Day
列编码为 1,否则为 0。
SELECT
CASE (WHEN DATEDIFF(dd, CONVERT(VARCHAR(10), Expiry, 102), CONVERT(VARCHAR(10), Created, 102)) = 0 THEN 1 ELSE 0 END) AS Same_Day
FROM database
在查找日期之间的天数之前,我正在尝试删除时间并保留日期信息。
期望的输出
|Created | Expiry |Same_Day |
|------------------------|-------------------------|---------|
|2021-01-23 12:34:43.123 | 2021-04-18 15:24:17.432 |0 |
|2021-02-19 10:01:01.231 | 2021-02-19 00:00:00.000 |1 |
但是,我收到一条警告消息:关键字附近的语法不正确WHEN
。请问有什么线索吗?
解决方案
由于您想比较创建和到期时间戳的日期组件,您应该直接这样做,而不使用DATEDIFF
:
SELECT
Created,
Expiry,
CASE WHEN CONVERT(VARCHAR(10), Expiry, 102) = CONVERT(VARCHAR(10), Created, 102)
THEN 1 ELSE 0 END AS Same_Day
FROM database;
演示
该DATEDIFF
函数在两个日期输入上运行,而不是两个字符串日期。
推荐阅读
- php - 尝试使用 PHP 连接到远程 SQL Server。错误“无法建立连接”
- ios - how to upload image with form data which image is on parameter to api?
- c# - 在 Devexpress DataGrid 中显示图像不起作用
- laravel-5 - 尝试通过单击 Laravel VS Code 转到代码内的文件
- c++ - 我们可以对内存分配进行单元测试吗?
- c# - Entity Framework Core 上的多线程问题
- ruby-on-rails - ActionCable - WebSocket 握手期间出错:意外响应代码:404
- angular - 如何修复 Http-Server npm 命令问题?
- scala - Constructor.newInstance 替换 Scala 对象
- machine-learning - 将多个模型的输出与 CTC 输出层相结合(集成)