sql - 按 SQL 短日期排序
问题描述
我想在短期内订购
ShortDate
20-Nov
17-Nov
29-Nov
15-Nov
7-Nov
6-Dec
25-Nov
14-Nov
9-Nov
12-Nov
5-Dec
26-Nov
28-Nov
8-Nov
1-Dec
3-Dec
23-Nov
我用了
ORDER BY CAST(CAST(DATEPART(MONTH,ShortDate) AS VARCHAR(10)) + CAST(RIGHT( '0' + CAST(DAY(ShortDate) AS varchar(2)), 2) AS VARCHAR(10)) AS INT) DESC
整个查询是
SELECT StaffAttendencecount ,TC.ShortDate
FROM #TempStaffAttendnece
INNER JOIN #TempCONStaffAttendnece TC
ON #TempStaffAttendnece.ShortDate = TC.ShortDate
ORDER BY CAST(CAST(DATEPART(MONTH,TC.ShortDate) AS VARCHAR(10)) + CAST(RIGHT( '0' + CAST(DAY(TC.ShortDate) AS varchar(2)), 2) AS VARCHAR(10)) AS INT) DESC
但它不工作我得到
消息 241,级别 16,状态 1,第 80 行从字符串转换日期和/或时间时转换失败。
谁能帮忙
解决方案
理想情况下,您不应该将日期存储为文本,或者,如果必须,请尝试使用至少包含年、月和日的 ISO 格式。话虽这么说,你可以在这里形成一个真诚的,然后对它进行排序:
SELECT ShortDate
FROM yourTable
ORDER BY TRY_CONVERT(datetime, ShortDate + '-2020');
演示
但是,如上所述,您应该将此查询视为短期修复,直到您有机会修复数据模型并将ShortDate
列转换为正确的真实日期或时间戳列。
推荐阅读
- javascript - 使用 Javascript 重置 CSS 并修复按钮中的“错误”
- wpf - 类 Excel 过滤 ListView
- dart - 如何修复“在构建 Builder(dirty) 时抛出了以下断言:类型‘Future
' 不是类型 'ProduktList' 的子类型 - python - Google Cloud Composer,无法安装 python-snappy
- docker - Jenkins 管理员密码不被接受
- java - 如果我的应用程序没有活动如何使用 KeyChain.choosePrivateKeyAlias 或者有什么方法可以从密钥库中选择证书和私钥?
- flutter - Flutter:我的动态菜单有上下文问题
- pandas - 用python在Excel中绘制图表标题边框样式和颜色
- python - 在固定域中查找单个变量函数的最小值/最大值的算法
- powershell - Powershell 中的 COM (MS Office) 事件