数据库中的字段DATE,格式如下:
2012-11-12 00:00:00
我想从日期中删除时间并返回日期,如下所示:
11/12/2012
首先,如果您的日期采用 varchar 格式,请更改它,将日期存储为日期,这将为您省去很多麻烦,而且最好尽早完成。问题只会变得更糟。
其次,一旦有了日期,不要将日期转换为 varchar!保持日期格式,并在应用程序端使用格式来获取所需的日期格式。
有多种方法可以执行此操作,具体取决于您的 DBMS:
SQL-Server 2008 及更高版本:
SELECT CAST(CURRENT_TIMESTAMP AS DATE)
SQL-Server 2005 及更早版本
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP), 0)
SQLite
SELECT DATE(NOW())
甲骨文
SELECT TRUNC(CURRENT_TIMESTAMP)
Postgresql
SELECT CURRENT_TIMESTAMP::DATE
如果您需要在报告中使用特定于文化的格式,您可以明确说明接收文本框的格式(例如 dd/MM/yyyy),也可以设置语言,以便显示该语言的相关日期格式.
无论哪种方式,这在 SQL 之外都可以更好地处理,因为在 SQL 中转换为 varchar 会影响您在报告中可能执行的任何排序。
如果您不能/不会将数据类型更改为 DATETIME,则仍将其转换为 SQL 中的日期(例如
CONVERT(DATETIME, yourField)
),然后再发送到报表服务并按上述方式进行处理。
只需使用,(在TSQL中)
SELECT convert(varchar, columnName, 101)
在 MySQL
SELECT DATE_FORMAT(columnName, '%m/%d/%Y')
我发现这个方法非常有用。然而,它会将您的日期/时间格式转换为日期,但无论如何它都能满足我的需要。 (我只需要在报告上显示日期,时间无关)。
CAST(start_date AS DATE)
更新
(请记住我是实习生;))
如果您使用 SSRS,我想出了一种更简单的方法来做到这一点。
实际更改报表中字段所在的文本框属性更容易。右键单击字段>数字>日期并选择适当的格式!
SELECT DATE('2012-11-12 00:00:00');
退货
2012-11-12
就我个人而言,我会返回完整的本机日期时间值并在客户端代码中对其进行格式化。
这样,您就可以使用用户的区域设置为该用户提供正确的含义。
“11/12”是不明确的。是吗:
TSQL
SELECT CONVERT(DATE, GETDATE()) // 2019-09-19
SELECT CAST(GETDATE() AS DATE) // 2019-09-19
SELECT CONVERT(VARCHAR, GETDATE(), 23) // 2019-09-19
有关更多信息,请参阅:SQL Server 日期格式
[月/日/年]
SELECT CONVERT(VARCHAR(10), cast(dt_col as date), 101) from tbl
[日/月/年]
SELECT CONVERT(VARCHAR(10), cast(dt_col as date), 103) from tbl
至少在mysql中,你可以使用
DATE(theDate)
。
您可以尝试以下方法:
SELECT CONVERT(VARCHAR(10),yourdate,101);
或者这个:
select cast(floor(cast(urdate as float)) as datetime);
使用此 SQL:
SELECT DATE_FORMAT(date_column_here,'%d/%m/%Y') FROM table_name;
在 Clickhouse 中使用:
SELECT toDate('2012-11-12 00:00:00')