我有一些表格,其中的日期(从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。哪个产品类别在最近三个月的交易中看到了最大的回报?
答案 0 :(得分:0)
您可以将默认日期格式设置更改为dateformat dmy
并进行对话:
set dateformat dmy
select cast('27-11-2013' as date)
答案 1 :(得分:0)
如果只有dd/MM/yyyy
和dd-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;