sql - 如何在 SQL 中将数字转换为日期?
问题描述
我有一个名为的字段SECURED
,其日期列为123120
,040320
实际上是12/31/20
或4/03/20
。我能够将该SELECT
地区的日期转换为:
SELECT LEFT(SECURED, 2) + '/' + replace(replace(SECURED, LEFT(SECURED, 2), ''),
RIGHT(SECURED, 2), '') + '/' + RIGHT(SECURED, 2) as 'Modified SECURED as Date'
WHERE CONVERT(date, SECURED, 101)
BETWEEN CONVERT(date, getdate() - 30, 101)
AND CONVERT(date, getdate(), 101)
如何从SECURED
列中提取日期为 30 天前的信息?
它不起作用,仍然将日期视为数字。
解决方案
如果secured
是一个字符串,你可以做一些操作和一个简单的cast()
:
select convert(date, concat('20', right(secured, 2), left(secured, 4))
您可能会发现实际创建计算列很方便,因此它始终可用:
alter table t add secured_date as (try_convert(date, concat('20', right(secured, 2), left(secured, 4))
您甚至可以保留该列并创建索引,这样您的查询就更有效率了。
推荐阅读
- javascript - Vue.js - v-for 不渲染 api 调用响应数据
- python - 如果数据库中已经存在,如何在 django 中的 views.py 文件中添加条件以不创建相同的数据对象?
- docker - 如何在 Jenkins 从节点上运行 Dockerfile 代理?
- azure - azure appservice 容器未获取 HTTPS 方案
- javascript - 创建对象时未设置类属性
- python - graphlab 错误没有名为“依赖项”的模块
- c# - 在 WPF 中将子对象设置为以编程方式创建的对象
- jitsi-meet - 如何根据需要或认为合适在 Jitsi 中添加新功能
- python - KivyMD MDTabs 无法处理
- javascript - Javascript - 文本字段不应自动填充保存的用户名