将日期时间转换为字符串的 SQL 查询
为了将 DateTime 转换为字符串,我们可以使用 CONVERT() 和 CAST()函数。这些函数用于将(任何数据类型的)值转换为指定的数据类型。
CONVERT()函数
句法:
CONVERT(VARCHAR, datetime [,style])
- VARCHAR - 它表示字符串类型。
- datetime – 它可以是计算要转换为字符串的日期或日期时间值的表达式。
- style – 它指定日期的格式。它的值由 SQL Server 预定义。样式参数是可选的。
CAST()函数
句法:
CAST(EXPRESSION AS DATATYPE(length))
- EXPRESSION - 它表示需要转换的值。
- DATATYPE – 这是我们要将表达式转换为的数据类型。
- length - 它表示结果数据类型的长度(可选)。
Without Century (YY) | With Century(YYYY) | Standard | Format |
---|---|---|---|
– | 0 or 100 | Default for datetime and smalldatetime | mon dd yyyy hh:miAM (or PM) |
1 | 101 | U.S. | 1 = mm/dd/yy 101 = mm/dd/yyyy |
2 | 102 | ANSI | 2 = yy.mm.dd 102 = yyyy.mm.dd |
3 | 103 | British/French | 3 = dd/mm/yy 103 = dd/mm/yyyy |
4 | 104 | German | 4 = dd.mm.yy 104 = dd.mm.yyyy |
5 | 105 | Italian | 5 = dd-mm-yy 105 = dd-mm-yyyy |
6 | 106 | – | 6 = dd mon yy 106 = dd mon yyyy |
7 | 107 | – | 7 = Mon dd, yy 107 = Mon dd, yyyy |
8 | 108 | – | hh:mm:ss |
在下面的示例中,我们将 DateTime 转换为不同格式的字符串。
第一步:创建数据库
询问:
CREATE DATABASE Product_order;
第 2 步:创建表
现在,我们需要在数据库中创建一个表。为此,我们将使用 CREATE 语句。
询问:
CREATE TABLE orders (prod_id INT,
prod_name VARCHAR(255),
order_date DATE,
PRIMARY KEY(prod_id));
步骤 3:将数据插入表中
在这一步中,我们将在订单表中插入数据。对于插入数据,我们将使用 INSERT 语句。
询问:
INSERT INTO orders VALUES (101, 'iPhone', '2020-07-20'),
(102, 'iPad', '2018-01-01'),
(103, 'iWatch', '2019-03-15'),
(104, 'iMac', '2016-05-13');
第 4 步:为了验证表的内容,我们将使用 SELECT 语句。
SELECT * FROM orders;
输出:
第 5 步:使用 CONVERT()函数
询问 :
/*Declaring DATETIME as dt*/
DECLARE @dt DATETIME = (SELECT order_date
FROM orders WHERE prod_id = 101);
/*SELECT statement is used to print the s1 message*/
SELECT
CONVERT(VARCHAR(20),@dt,0) s1;
输出:
询问 :
在此,我们将样式参数更改为 1。同样,您可以使用上表中的不同样式参数值。
/*Declaring DATETIME as dt*/
DECLARE @dt DATETIME = (SELECT order_date
FROM orders WHERE prod_id = 103);
/*SELECT statement is used to print the s1 message*/
SELECT
CONVERT(VARCHAR(20),@dt,1) s1;
输出 :
第 6 步:使用 CAST()函数
询问:
/*Declaring DATETIME as dt*/
DECLARE @dt DATETIME = (SELECT order_date
FROM orders WHERE prod_id = 102);
/*SELECT statement is used to print the s1 message*/
SELECT
CAST(@dt AS DATETIME) s1;
输出: