sql - 如何检查sql server中是否存在多种日期格式?
问题描述
我需要检查 sql server 的同一列中是否存在多个日期格式?
列的数据类型是 nvarchar
drop table dateformats
create table dateformats(datevalue varchar(50))
insert dateformats
values ('01-january-2019'),('31-JAN-2019'),('2019-01-01'),
('16-07-2019'),('20-12-2019'),('16-10-2019'),('16-AUG-2019'),('AUG-07-2019'),('16/07/2019'),('07/16/2019'),('01-jan-2019'),('01-january-2019'),(''),(NULL)
SELECT datevalue
FROM dateformats
返回以显示该列具有多种日期格式的查询。
解决方案
您可以尝试使用此查询。
现在,我已经通过 ofDMY
和MDY
in 查询修复了 4 种格式,但是如果您已经在数组或 SQL 表中拥有所有格式,您可以在查询中使用它。
此查询将返回您在表的特定列中使用的所有日期格式
SET DATEFORMAT dmy
SELECT formats into #temp FROM (
SELECT
max(
CASE WHEN isdate(datevalue) = 1 then
(CASE WHEN CAST(datevalue AS VARCHAR(50)) = CAST(FORMAT(CAST(datevalue AS DATE),'dd-MM-yyyy') AS VARCHAR(50)) THEN 'dd-MM-yyyy' ELSE '' END)
ELSE '' END )
AS formats from dateformats
UNION
SELECT
max(
CASE WHEN isdate(datevalue) = 1 then
(CASE WHEN CAST(datevalue AS VARCHAR(50)) = CAST(FORMAT(CAST(datevalue AS DATE),'dd/MM/yyyy') AS VARCHAR(50)) THEN 'dd/MM/yyyy' ELSE '' END)
ELSE '' END )
AS formats from dateformats
UNION
SELECT
max(
CASE WHEN isdate(datevalue) = 1 then
(CASE WHEN CAST(datevalue AS VARCHAR(50)) = CAST(FORMAT(CAST(datevalue AS DATE),'dd-MMM-yyyy') AS VARCHAR(50)) THEN 'dd-MMM-yyyy' ELSE '' END)
ELSE '' END )
AS formats from dateformats
) AS a
WHERE formats <> '';
set dateformat MDY insert into #temp
SELECT formats FROM (
SELECT
max(
CASE WHEN isdate(datevalue) = 1 then
(CASE WHEN CAST(datevalue AS VARCHAR(50)) = CAST(FORMAT(CAST(datevalue AS DATE),'MM-dd-yyyy') AS VARCHAR(50)) THEN 'MM-dd-yyyy' ELSE '' END)
ELSE '' END )
AS formats from dateformats
UNION
SELECT
max(
CASE WHEN isdate(datevalue) = 1 then
(CASE WHEN CAST(datevalue AS VARCHAR(50)) = CAST(FORMAT(CAST(datevalue AS DATE),'MM/dd/yyyy') AS VARCHAR(50)) THEN 'MM/dd/yyyy' ELSE '' END)
ELSE '' END )
AS formats from dateformats
) AS b
WHERE formats <> '';
select * from #temp
推荐阅读
- javascript - 出现错误,您无法在练习列表组件中呈现组件练习
- xml - 使用 AIR UI 向 IRS 提交 ACA 文件时出现无效的命名空间错误
- css - 角度项目中的 mini-extract-css-plugin 问题
- python - 如何在基于 Django 类的视图中使用多个模型并在 html 模板中呈现字段值?
- javascript - 输入框中的数据不能更改
- powershell - 如何查看文件,无论何时更改,使用新的附加行并使用 powershell 对其执行一些操作
- chart.js - 打印 chartjs 工具提示
- typescript - 在 package.json 中导入没有 main 的包时避免 ESLint import/no-unresolved 错误
- ios - 当标签栏的标签/视图控制器发生变化时,如何更新标签?(迅速)
- excel - Excel公式:对于列中峰值/谷值的每个实例,获取到下一个峰值/谷值的范围/距离