web-dev-qa-db-fra.com

comment enlever l'heure de datetime

Le champ DATE dans la base de données a le format suivant:

2012-11-12 00:00:00

Je voudrais supprimer l'heure de la date et renvoyer la date comme ceci:

11/12/2012
36
user1860212

Tout d’abord, si vos dates sont au format varchar, stockez les dates sous forme de dates vous éviterez beaucoup de maux de tête et c’est quelque chose qu'il vaut mieux faire plus tôt que plus tard. Le problème ne fera qu'empirer.

Deuxièmement, une fois que vous avez une date , NE PAS convertir la date en varchar! Conservez-le au format date et utilisez le formatage côté application pour obtenir le format de date requis.

Il existe différentes méthodes pour ce faire en fonction de votre SGBD:


SQL-Server 2008 et ultérieur:

SELECT  CAST(CURRENT_TIMESTAMP AS DATE)

SQL-Server 2005 et versions antérieures

SELECT  DATEADD(DAY, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP), 0)

SQLite

SELECT  DATE(NOW())

Oracle

SELECT  TRUNC(CURRENT_TIMESTAMP)

Postgresql

SELECT  CURRENT_TIMESTAMP::DATE

Si vous devez utiliser une mise en forme spécifique à la culture dans votre rapport, vous pouvez indiquer explicitement le format de la zone de texte réceptrice (par exemple, jj/MM/aaaa) ou définir la langue de sorte qu'elle affiche le format de date correspondant à cette langue.

Dans les deux cas, cette opération est beaucoup mieux gérée en dehors de SQL, car la conversion en varchar en SQL aura une incidence sur le tri que vous pouvez effectuer dans votre rapport.

Si vous ne pouvez pas/ne voulez pas changer le type de données en DATETIME, convertissez-le toujours en date dans le code SQL (par exemple, CONVERT(DATETIME, yourField)) avant de l'envoyer aux services de rapport et de le gérer comme décrit ci-dessus.

62
GarethD

juste utiliser, (dans TSQL)

SELECT convert(varchar, columnName, 101)

dans MySQL

SELECT DATE_FORMAT(columnName, '%m/%d/%Y')
8
John Woo

J'ai trouvé cette méthode très utile. Cependant, il convertira votre format de date/heure en date juste, mais le moins sera le travail pour lequel j'ai besoin. (J'avais juste besoin d'afficher la date sur un rapport, l'heure n'était pas pertinente).

CAST(start_date AS DATE)

MISE À JOUR

(N'oubliez pas que je suis un stagiaire;))

J'ai imaginé un moyen plus simple de procéder si vous utilisez SSRS.

Il est plus facile de modifier les propriétés de la zone de texte où se trouve le champ dans le rapport. Faites un clic droit sur le champ> Numéro> Date et sélectionnez le format approprié!

4
SnellyCat

Personnellement, je renverrais la valeur native complète de date/heure et le formaterais dans le code client.

De cette façon, vous pouvez utiliser les paramètres régionaux de l'utilisateur pour lui donner le sens correct.

"11/12" est ambigu. Est-ce:

  • 12 novembre
  • 11 décembre
3
gbn
SELECT DATE('2012-11-12 00:00:00');

résultats

2012-11-12
2
Davide Berra

Pour plus d'informations, reportez-vous à ceci: Formats de date SQL Server

[MM/JJ/AAAA]

SELECT CONVERT(VARCHAR(10), cast(dt_col as date), 101) from tbl

[JJ/MM/AAAA]

SELECT CONVERT(VARCHAR(10), cast(dt_col as date), 103) from tbl

Démo en direct

2
Vishal Suthar

Dans mysql au moins, vous pouvez utiliser DATE(theDate).

0
Bart Friederichs

Vous pouvez essayer ce qui suit:

SELECT CONVERT(VARCHAR(10),yourdate,101);

ou ca:

select cast(floor(cast(urdate as float)) as datetime);
0
bonCodigo

Utilisez ce SQL:

SELECT DATE_FORMAT(date_column_here,'%d/%m/%Y') FROM table_name;
0
bodi0