如何将日期转换为正确的格式并获得最大,最小范围?

时间:2018-11-30 09:29:27

标签: sql sql-server

我有一些表格,其中的日期(从2011年到2014年)采用不同的格式:27-11-2013、27 / 11/2013。

我用过

SELECT Convert (date,tran_date,103) as Valid_Tran_date FROM Transactions

已将日期转换为yyyy-mm-dd格式,但是我无法获取日期的最大,最小和范围以供进一步使用。

我已经回答了以下问题: Q1。可用于分析的交易数据的时间范围是什么?在不同的列中同时显示输出的天数,月数和年数。

Q2。对于年龄在25到35岁之间的所有客户,从这些数据中提供的最大交易日期开始,这些消费者在最近30天的交易中产生的总净收入是多少?

Q3。哪个产品类别在最近三个月的交易中看到了最大的回报?

2 个答案:

答案 0 :(得分:0)

您可以将默认日期格式设置更改为dateformat dmy并进行对话:

set dateformat dmy

select cast('27-11-2013' as date)

答案 1 :(得分:0)

如果只有dd/MM/yyyydd-MM-yyyy格式,则解决方案非常简单。您只需要将数据更改为ISO格式,然后将列的定义更改为date

USE Sandbox;
GO

CREATE TABLE dbo.DateTable (DateValue varchar(10));
INSERT INTO dbo.DateTable (DateValue)
VALUES('27-11-2013'),('27/11/2013');
GO
--Change data to ISO format:
UPDATE dbo.DateTable
SET DateValue = CONVERT(varchar(8),CONVERT(date,REPLACE(DateValue,'-','.'),103),112);

--Change to date datatype

ALTER TABLE dbo.DateTable ALTER COLUMN DateValue date;
GO

SELECT *
FROM dbo.DateTable;

GO

DROP TABLE dbo.DateTable;