sql - 将日期时间转换为美国和欧洲日期时间

标签 sql sql-server

我需要转换格式为 2012-10-15 15:00:21.970

至欧洲:15/10/2012 15:00:21

CONVERT(nvarchar, @DateTime, 103) + N' ' + CONVERT(nvarchar, @DateTime, 8)
-- 15/10/2012 15:00:21

致美国:2012 年 10 月 15 日 03:00:21 PM

CONVERT(NVARCHAR, @DateTime, 101)
-- 10/15/2012

我无法计算出美国换算的时间部分。我可能可以使用 DATEPART 来完成此操作,但此函数将在 select 语句中格式化时间,因此我尝试使其尽可能简单。有什么想法吗?

资源:http://www.w3schools.com/sql/func_convert.asp

想通了

DECLARE @DateTime datetime = '2012-10-15 15:00:21.970'
SELECT
CONVERT(nvarchar, @DateTime, 101) + N' ' +
LEFT(N'0' + RIGHT(CONVERT(nvarchar, @DateTime, 109), 13), 8) + N' ' +
 CASE WHEN DATEPART(HH,@DateTime) < 13
        THEN 'AM'
        ELSE 'PM'
        END

最佳答案

SELECT CONVERT(NVARCHAR, @DateTime, 101) + N' ' +CONVERT(NVARCHAR, CAST(@DateTime AS time(0)), 109)

关于sql - 将日期时间转换为美国和欧洲日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17679009/

相关文章:

mysql - SQL 和 Delphi : recursive mechanism for creating a tree from a table

sql - 在 SQL 中计算移动 4 行的总和

sql-server - SQL Server Developer Edition 可以安装在 Windows 7 Home Premium 上吗?

sql - 更改 SQL SELECT 语句中的日期格式(DD/MM/YYYY)

mysql - 仅将存储过程从 SQL Server 自动迁移到 mysql

sql-server - 使用什么来打开 .mdf(SQL 数据库)文件

python - UWSGI 杀死 worker 的速度太快了

sql - 如何仅从字符串中获取数字作为 SQL Server 中没有前导零的计算列?

sql - 从 SQLite 中的 INSERT OR IGNORE 语句中查找自动递增的值

mysql - 来自查询的响应无法映射到 pojo 类 spring boot